elasticsearch 使用Logstash创建正确的ElasticSearch索引,elasticsearch,logstash,elasticsearch,Logstash" /> elasticsearch 使用Logstash创建正确的ElasticSearch索引,elasticsearch,logstash,elasticsearch,Logstash" />

elasticsearch 使用Logstash创建正确的ElasticSearch索引

elasticsearch 使用Logstash创建正确的ElasticSearch索引,elasticsearch,logstash,elasticsearch,Logstash,我没有访问corporate ElasticSearch集群的权限,我使用下面的Logstash配置在ElasticSearch中创建索引和存储序列化对象 input { http { host => "0.0.0.0" port => 9600 codec => json } } output { elasticsearch { hosts => ["elasticsea

我没有访问corporate ElasticSearch集群的权限,我使用下面的Logstash配置在ElasticSearch中创建索引和存储序列化对象

input {
    http
    {
        host => "0.0.0.0"
        port => 9600
        codec => json
    }
}

output {
    elasticsearch { 
        hosts => ["elasticsearch:9200"] 
    }
    stdout { codec => rubydebug }
}
此解决方案的问题是字段存储为不正确的类型。例如,整数字段在ElasticSearch中存储的长度相同

input {
    http
    {
        host => "0.0.0.0"
        port => 9600
        codec => json
    }
}

output {
    elasticsearch { 
        hosts => ["elasticsearch:9200"] 
    }
    stdout { codec => rubydebug }
}
是否可以随请求一起发送模式?(使用protobuf、trift、avro等)

如果没有,是否可以随请求发送所需的ElasticSearch映射?(我不能使用模板文件,因为我也没有对日志库的文件访问权限。我有数百个不同的对象,这使得它不切实际。)

编辑:我不能为每个字段指定变异逻辑。它们有数百个。

您可以向配置文件中添加一个。Elasticsearch字段将自动映射到相应的类型。就你而言:

input {
    http
    {
        host => "0.0.0.0"
        port => 9600
        codec => json
    }
}

filter {
  mutate { convert => ["my_field", "integer"]}
}

output {
    elasticsearch { 
        hosts => ["elasticsearch:9200"] 
    }
    stdout { codec => rubydebug }
}  

我不想为所有字段逐个指定转换,因为我有几十个对象和数百个字段。