Elasticsearch不会返回特定术语搜索的结果

时间:2015-04-29 19:14:58

标签: elasticsearch

我正在尝试进行查询,我会针对特定术语过滤术语。这是我试图运行的查询:

{
    "query": {
        "filtered": {
            "filter": {
                "term": {
                    "tags": "sports"
                }
            }
        }
    },
    "sort": {
        "timestamp": "desc"
    }
}

当我使用不同的字段(ex: "type": "blog_post")运行相同的查询时,它有效,所以我对语法有信心。

我检查过以确保tags已正确映射(我在“http://server_name/index/_mapping”处查看)并且确实如此。

我还检查过Elasticsearch中有"tags" : "sports"的文档。

任何想法可能是什么问题?只有那个字段,所有其他字段都可以工作,"tags"被编入索引。

1 个答案:

答案 0 :(得分:0)

您为“标签”字段定义的映射/分析器是什么?如果您还没有定义任何分析仪,那么将使用标准分析仪对其进行分析,而标准分析仪将提供带有标记的“运动”代替“运动”

如果您执行术语搜索或术语过滤,则不会分析输入,并会尝试搜索完全匹配。因此,搜索术语“体育”将不匹配。

您应该将标记的映射更改为“not_analyzed”,或者将搜索查询更改为除术语之外的其他内容,例如query string query