我有未分析字符串字段的文档(由映射强制执行或全局设置)。我试图了解两者之间的实际区别是什么
{ "query": { "bool": { "must": [ {"match": {"hostname": "hello"}}, ] } } }
和
{ "query": { "term": { "hostname": "hello" } } }
我在术语查询的文档中看到,分析字符串时有区别(这不是我的情况)。 有理由使用termvs match吗?
term
match
在term查询中,hello不分析搜索到的术语(即),并且将其与倒排索引中存在的术语完全匹配。
hello
在match查询中,hello首先分析搜索到的术语(即),然后将其与倒排索引中存在的术语进行匹配。
在你的情况下,由于hostname是not_analyzed在映射,你的第一选择应该是使用term,因为它是没有意义的分析在搜索时的一个术语用来搜索已经不是在索引时间首先分析了相同的词语查询。
hostname
not_analyzed