我的文档包含未分析的字符串字段(由映射强制或全局设置)。我试图了解
之间的实际区别{
"query": {
"bool": {
"must": [
{"match": {"hostname": "hello"}},
]
}
}
}
和
{
"query": {
"term": {
"hostname": "hello"
}
}
}
我在term queries的文档中看到,分析字符串时存在差异(这不是我的情况)。 是否有理由使用term
vs match
?
答案 0 :(得分:8)
在term
查询中,未分析搜索的字词(即hello
),并且与反向索引中的字词完全匹配。
在match
查询中,首先分析搜索到的术语(即hello
),然后将其与倒排索引中的术语进行匹配。
在您的情况下,由于映射中的hostname
为not_analyzed
,因此您首选应使用term
查询,因为在搜索时分析字词是没有意义的在索引时搜索尚未分析的相同术语。