elasticsearch匹配与词条查询

Linlin :

我使用匹配查询搜索“ request.method”:“ GET”:

    {
      "query": {
        "filtered": {
          "query": {
            "match": {
              "request.method": "GET"
            }
          },
          "filter": {
            "bool": {
              "must": [
...

正如预期的那样,Match查询可以获得结果,如下所示:

在此处输入图片说明

但是问题是使用Term查询时没有结果。

更新查询以将“ match”更改为“ term”,并保持其他部分不变:

{
  "query": {
    "filtered": {
      "query": {
        "term": {
          "request.method": "GET"
        }
      },
      "filter": {
        "bool": {
          "must": [
...

我认为字词查询是Match查询的“未分析”版本。如上图所示,至少有一个记录的“ request.method”等于“ GET”。为什么上述术语查询没有结果?谢谢。

在此处输入图片说明

Akshay:

假设您正在使用Standard Analyzer, GETget当存储在索引中时。源文档仍将具有原始的“ GET”。

match查询将对搜索词使用相同的标准分析器,因此将匹配存储在索引中的内容。term查询不会将任何分析器应用于搜索项,因此只会在倒排索引中查找该确切项。

要在您的示例中使用术语查询,请将大写的“ GET”更改为小写的“ get”或更改映射,以便将request.method字段设置为not_analyzed

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章