使用索引模板 Elasticsearch 6.8 禁用特定字段的映射

Disable mapping for a specific field using an Index Template Elasticsearch 6.8

我设置了 EFK 管道。每天都会使用 logstash-* 前缀创建一个新索引。每次 Fluentd 发送新字段时,该字段都会添加到索引模式 logstash-*。我正在尝试创建一个索引模板,该模板将在创建索引时禁用对特定字段的索引。我使用下面的 PUT 让它在 ES 7.1 中工作:

PUT _template/logstash-test
{
  "index_patterns": ["logstash-*"],
  "mappings": {
    "dynamic_templates" : [
        {
          "params" : {
            "path_match" : "params",
            "mapping" : {
              "enabled": false
            }
          }
        }
      ]
  }
}

然而,当我在 Elasticsearch 6.8 上尝试此操作时,出现以下错误:

"type": "illegal_argument_exception",
"reason": "Malformed [mappings] section for type [dynamic_templates], should include an inner object describing the mapping"

在 Elasticsearch 6.X 中有点不同,因为它有映射类型,即 not used anymore

尝试这样的事情:

PUT _template/logstash-test
{
    "index_patterns": ["logstash-*"],
    "mappings": {
        "_doc": {
            "dynamic_templates" : [
                {
                    "params" : {
                        "path_match" : "params",
                        "mapping" : {
                            "enabled": false
                        }
                    }
                }
            ]
        }
    }
}

如果您的索引有不同的自定义类型并且没有使用 _doc 类型,您应该在映射中使用它。