我正在浏览文档并了解multi_field用于在一个字段上应用不同的分析器。
{
"tweet" : {
"properties" : {
"name" : {
"type" : "multi_field",
"fields" : {
"name" : {"type" : "string", "index" : "analyzed"},
"untouched" : {"type" : "string", "index" : "not_analyzed"}
}
}
}
}
}
我已将数据编入索引如下
/tweet/1 {
"name" : "anil"
}
我正在寻找以下相同的内容。
/<indexname>/_search
我得到的数据如下。
hits : [
{
"_index" : ...
....
"_source" : {
"name" : "anil"
}
}
]
到目前为止这很好。
现在我正在寻找比赛。
GET <indexname>/_search
{
"query": {
"match": {
"name": "anil"
}
}
}
上面的一个工作正常,因为我已经应用了分析仪。
我的问题是,如果我想要使用精确字符串应用过滤器,我会得到0次点击。
GET <indexname>/_search
{
"query": {
"filtered": {
"query": {
"match_all": {}
},
"filter": {
"term": {
"name" : "anil"
}
}
}
}
}
请建议做什么。
答案 0 :(得分:2)
你试过这个吗?
GET <indexname>/_search
{
"query": {
"filtered": {
"query": {
"match_all": {}
},
"filter": {
"term": {
"name.untouched" : "anil"
}
}
}
}
}
此外,您不必再使用multi_fields,您可以使用字段,如here所述,但我认为这不是您问题的原因。