Elasticsearch字段限制超过1000

时间:2018-10-04 18:13:52

标签: elasticsearch logstash geoip kibana-6 amazon-cloudtrail

有人可以帮忙吗?我需要修复错误,以便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
    }
 }

这是我在Logstash计算机上看到的limit

  

2018-10-04T17:49:49,883] [WARN] [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”,“状态” => 400,“错误” => {“类型” =>“ illegal_argument_exception”,“原因” =>“索引[cloudtrail-2018.09.27]中总字段[1000]的限制已超出”}}}

预先感谢

1 个答案:

答案 0 :(得分:0)

  1. 您将不得不在集群上设置index template

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

PUT /_template/Global
{
    "index_patterns" : ["*"],
    "order" : 0,
    "settings" : {
        "index.mapping.total_fields.limit" : "2000"
    }        
}

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

  1. 另一种选择是使用logstash template as explained on this link

当一个文档中的字段数量过多时,还应该考虑重组文档映射,而不是在响应中始终要求所有字段。研究如何创建诸如Join / parent-child等关系以创建较小的文档以提高效率。