elasticsearch匹配与术语查询
我使用匹配查询search“request.method”:“GET”:
{ "query": { "filtered": { "query": { "match": { "request.method": "GET" } }, "filter": { "bool": { "must": [ ...
如预期的那样,Match查询可以得到结果,如下所示:
但问题是,当使用术语查询,没有结果。
更新查询以将“匹配”更改为“期限”,并保持其他部分保持不变:
{ "query": { "filtered": { "query": { "term": { "request.method": "GET" } }, "filter": { "bool": { "must": [ ...
我认为术语查询是匹配查询的“未分析”版本。 如上图所示,至less有一个logging的“request.method”等于“GET”。 为什么上述Term查询没有结果? 谢谢。
假设你正在使用标准分析器,当存储在索引中时, GET
变得被get
。 源文件仍然具有原始的“GET”。
match
查询将对search词应用相同的标准分析器,因此将匹配索引中存储的内容。 term
查询不会将任何分析器应用于search词语,因此只会在倒排索引中查找确切的词语。
要在你的例子中使用查询这个术语,把大写“GET”改为小写“get”或者改变你的映射,这样request.method字段被设置为not_analyzed
。