elasticsearch default_field vs fields 不同的结果

elasticsearch default_field vs fields different results

这里有两个查询。 第一:

{
  "query": {
    "filtered": {
      "query": {
        "query_string": {
          "query": "27444.2",
          "default_field": "text"
        }
      }
    }
  },
  "from": 0,
  "size": 50
}

第二个:

{
  "query": {
    "filtered": {
      "query": {
        "query_string": {
          "query": "27444.2"
        }
      }
    }
  },
  "fields": ["text"],
  "from": 0,
  "size": 50
}

它们之间的唯一区别是,首先我使用 default_field 指定要搜索的字段,然后我通过字段参数指定它。字段名称相同。 我希望这两种变体都能产生相同的结果,但事实并非如此。第一个变体 return 没有任何结果,第二个 return 有结果。那么我在这里做错了什么?陷阱在哪里

弹性搜索 1.4.2

你给字段参数的方式是错误的。 在第二种情况下,您指的是 field params in the query ,您将结果限制为仅显示某些字段而不是整个 _source

以下是您要找的 -

{
  "query": {
    "filtered": {
      "query": {
        "query_string": {
          "query": "27444.2",
          "fields": ["text"]
        }
      }
    }
  },
  "from": 0,
  "size": 50
}

2个查询不一样。 首先搜索字段 'text',然后搜索所有字段,作为响应,仅 returns 'field'。