术语查询和匹配查询之间有什么区别?

时间:2016-10-19 07:00:24

标签: elasticsearch

我的文档包含未分析的字符串字段(由映射强制或全局设置)。我试图了解

之间的实际区别
{
    "query": {
        "bool": {
            "must": [
                {"match": {"hostname": "hello"}},
            ]
        }
    }
}

{
    "query": {
        "term": {
            "hostname": "hello"
        }
    }
}

我在term queries的文档中看到,分析字符串时存在差异(这不是我的情况)。 是否有理由使用term vs match

1 个答案:

答案 0 :(得分:8)

term查询中,未分析搜索的字词(即hello),并且与反向索引中的字词完全匹配。

match查询中,首先分析搜索到的术语(即hello),然后将其与倒排索引中的术语进行匹配。

在您的情况下,由于映射中的hostnamenot_analyzed,因此您首选应使用term查询,因为在搜索时分析字词是没有意义的在索引时搜索尚未分析的相同术语。