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