我正在尝试进行查询,我会针对特定术语过滤术语。这是我试图运行的查询:
{
"query": {
"filtered": {
"filter": {
"term": {
"tags": "sports"
}
}
}
},
"sort": {
"timestamp": "desc"
}
}
当我使用不同的字段(ex: "type": "blog_post")
运行相同的查询时,它有效,所以我对语法有信心。
我检查过以确保tags
已正确映射(我在“http://server_name/index/_mapping”处查看)并且确实如此。
我还检查过Elasticsearch中有"tags" : "sports"
的文档。
任何想法可能是什么问题?只有那个字段,所有其他字段都可以工作,"tags"
被编入索引。
答案 0 :(得分:0)
您为“标签”字段定义的映射/分析器是什么?如果您还没有定义任何分析仪,那么将使用标准分析仪对其进行分析,而标准分析仪将提供带有标记的“运动”代替“运动”
如果您执行术语搜索或术语过滤,则不会分析输入,并会尝试搜索完全匹配。因此,搜索术语“体育”将不匹配。
您应该将标记的映射更改为“not_analyzed”,或者将搜索查询更改为除术语之外的其他内容,例如query string query。