elasticsearch 仅允许索引模板中的字段,elasticsearch,logstash,elastic-stack,logstash-grok,elasticsearch,Logstash,Elastic Stack,Logstash Grok" /> elasticsearch 仅允许索引模板中的字段,elasticsearch,logstash,elastic-stack,logstash-grok,elasticsearch,Logstash,Elastic Stack,Logstash Grok" />

elasticsearch 仅允许索引模板中的字段

elasticsearch 仅允许索引模板中的字段,elasticsearch,logstash,elastic-stack,logstash-grok,elasticsearch,Logstash,Elastic Stack,Logstash Grok,我让logstash将文档推到elasticsearch集群中 我将一个模板应用于带有logstash的索引: elasticsearch { hosts => 1.1.1.1.,2.2.2.2. index => "logstash-myindex-%{+YYYY-MM-dd}" template_name => "mytemplate" template => "/etc/logstash/index_templates/mytemplate.json

我让logstash将文档推到elasticsearch集群中

我将一个模板应用于带有logstash的索引:

elasticsearch {
  hosts => 1.1.1.1.,2.2.2.2.
  index => "logstash-myindex-%{+YYYY-MM-dd}"
  template_name => "mytemplate"
  template => "/etc/logstash/index_templates/mytemplate.json"
  template_overwrite => true
}
有没有办法只将模板中定义的字段添加到文档中?因为有时候文档有一堆我不关心的其他字段,我不想手动过滤掉每一个字段。我想能够说,如果字段不在索引模板不添加

编辑: 我在索引模板中执行了此操作,但模板中未指定的字段仍将添加到文档中:

{
  "template": "logstash-myindex*",
  "order": 10,
  "mappings": {
    "_default_": {
      "dynamic": "scrict",
      "_all": {
        "enabled": false
      },
      "properties": {
        "@timestamp": {
          "type": "date",
          "include_in_all": false
        },
        "@version": {
          "type": "keyword",
          "include_in_all": false
        },
        "bytesReceived": {
          "type": "text",
          "norms": false,
          "fields": {
            "keyword": {
              "type": "keyword"
            }
          }
        },
         .... etc

我不熟悉logstash,但我假设这就像在ElasticSearch中创建索引一样

在ElasticSearch中,您可以通过添加以下内容来禁用:

"dynamic": false
到映射

这看起来像这样:

{
  "mappings": {
    "_default_": { 
      "dynamic": false
    }
  }
}

尝试严格但不起作用,而且我想我需要动态:“false”,因为我仍然希望添加文档,而不是新字段。你是对的,这应该是false。我更新了答案。我会想一想为什么这可能行不通,看看我能不能想出什么办法。。。。