ElasticSearch 6,copy_to 具有动态索引映射

ElasticSearch 6, copy_to with dynamic index mappings

也许我遗漏了一些简单的东西,但仍然无法弄清楚以下内容:

从 ES 6.x 开始,_all 字段已弃用,建议使用 copy_to 指令 (https://www.elastic.co/guide/en/elasticsearch/reference/current/copy-to.html)。

但是,我的印象是您需要明确指定要复制到自定义 _all 字段的字段。但是如果我使用动态映射,我事先不知道字段,因此不能使用 copy_to?

有什么方法可以告诉 ES 将所有遇到的字段复制到自定义 _all 字段,以便我可以搜索所有字段?

提前致谢!

您可以使用 Dynamic Templates。基本上创建一个索引,添加自定义 catch_all 字段,然后为所有字符串字段指定特定的 属性。 (以前没有这样做过,但我相信这是现在唯一的方法。因为当你放置动态模板时字段 catch_all 已经存在,它不会匹配 catch_all - 这意味着catch_all 不会复制到自身,但你自己检查一下以确保)。

PUT my_index
{
  "mappings": {
    "_doc": {
      "dynamic_templates": [
        {
          "strings": {
            "match_mapping_type": "string",
            "mapping": {
              "type": "text",
              "copy_to": "catch_all"
            }
          }
        }
      ]
    }
  }
}