我试图使用术语过滤器在数组列表中找到确切的标记名,例如。
tag_names: ["tea", "green tea"]
我用
{"filter": {"term": {"tag_names": "green tea"}}}
它给我一个错误的结果。我搜索了很多链接,只是找到了与数组列表完全匹配的解决方案(但没有空格)。
最佳答案
如果要搜索准确的术语,请确保要搜索的字段是not_analyzed
。 Term Query
适用于not_analyzed
字段。
如果您的字段是analyzed
,则术语green tea
将被标记为两个术语green
和tea
。在这种情况下,您可能需要使用match query
或query_string
查询。
{
"query": {
"query_string": {
"default_field": "tag_names",
"query": "green tea"
}
}
}
关于
analyzed
和non anlyzed
here的研究您可以使用以下命令查看
tag_names
字段是analyzed
还是not_analyzed
GET /index/type/_mapping