一尘不染

在ElasticSearch 7+中,如何搜索所有文本字段?

elasticsearch

我想在我存储在Elasticsearch 7.3中的文档中搜索单词

我想要在以前版本的Elasticsearch上工作的示例是:

{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "_all": "oliver"
          }
        }
      ],
      "must_not": [],
      "should": []
    }
  },
  "from": 0,
  "size": 10,
  "sort": [],
  "aggs": {}
}

但是此查询不适用于Elasticsearch 7+,因为_all已删除。现在该_all字段消失了,我该如何编写查询以完成相同的任务?

注意:我已经阅读了copy_to将所有字段复制到自定义字段中的建议,但是这要求显式地写出每个字段以包括在all_fields字段中。由于我有很多小字段,因此我试图避免这种情况,而是复制能够查询_all的行为。


阅读 1421

收藏
2020-06-22

共1个答案

一尘不染

ES文档中提到了它。

_all可能不再为在6.0+中创建的索引启用,请使用自定义字段和映射copy_to参数

因此,您需要做的是创建自己的自定义_all字段,您可以将其命名为all_fieldsetc,然后使用copy_to复制自己的所有字段值all_fields,现在,由于此自定义字段具有所有字段值,因此您可以使用它而不是_all字段。

2020-06-22