Elasticsearch 字段限制超过 1000

tri*_*leb 2 geoip elasticsearch logstash amazon-cloudtrail kibana-6

有人可以帮忙吗?我需要修复该错误,以便 S3 中的 CloudTrail 日志可以发送到 Logstash ES 并在 Kibana 中查看。无法弄清楚如何将字段限制提高到更高。我的配置看起来像

input {
   s3 {
     bucket => "sample-s3bucket"
     region => "eu-west-1"
     type => "cloudtrail"
     codec => cloudtrail {}
     sincedb_path => "/tmp/logstash/cloudtrail"
     exclude_pattern => "/CloudTrail-Digest/"
     interval => 300
   }
}

filter {
    if [type] == "cloudtrail" {
        json {
            source => "message"
        }

        geoip {
            source => "sourceIPAddress"
            target => "geoip"
            add_tag => ["cloudtrail-geoip"]
        }
    }
}

output {
    elasticsearch {
      hosts => "coordinate_node:9200"
      index => 'cloudtrail-%{+YYYY.MM.dd}'
         }
    stdout {
     codec => rubydebug
    }
 }
Run Code Online (Sandbox Code Playgroud)

这是我在我的 Logstash 机器上看到的内容limit

2018-10-04T17:49:49,883][警告][logstash.outputs.elasticsearch] 无法将事件索引到 Elasticsearch。{:status=>400, :action=>["index", {:_id=>nil, :_index=>"cloudtrail-2018.09.27", :_type=>"doc", :_routing=>nil}, #], :response=>{"index"=>{"_index"=>"cloudtrail-2018.09.27", "_type"=>"doc", "_id"=>"lrMzQGYBOny1_iySNW6G", "status"=> 400, "error"=>{"type"=>"illegal_argument_exception", "reason"=>"已超过索引 [cloudtrail-2018.09.27] 中总字段数 [1000] 的限制"}}}

提前致谢

Pol*_*ton 5

  1. 您必须在集群上设置索引模板。

您可以使用下面的模板来设置添加到集群的所有索引的设置。通过 Logstash 建立索引后,下面的模板会将创建的所有索引的字段限制设置为 2000。

PUT /_template/Global
{
    "index_patterns" : ["*"],
    "order" : 0,
    "settings" : {
        "index.mapping.total_fields.limit" : "2000"
    }        
}
Run Code Online (Sandbox Code Playgroud)

"index_patterns" : ["cloudtrail-*"]注意:如果您想使用特定索引的设置,可以将模式更改为。

  1. 另一种选择是使用Logstash 模板,如此链接中所述

当一个文档中的字段数量如此之多时,您还应该考虑重构文档映射,而响应中并非始终需要所有字段。考虑创建连接/父子等关系来创建更小的文档以提高效率。