elasticsearch 如何在logstash中创建自定义文档_id?,elasticsearch,logstash,elasticsearch,Logstash" /> elasticsearch 如何在logstash中创建自定义文档_id?,elasticsearch,logstash,elasticsearch,Logstash" />

elasticsearch 如何在logstash中创建自定义文档_id?

elasticsearch 如何在logstash中创建自定义文档_id?,elasticsearch,logstash,elasticsearch,Logstash,这是logstash输出过滤器示例 output { elasticsearch { hosts => ["localhost"] sniffing => true manage_template => false index => "mqtt-index-%{+YYYY.MM.dd}" document_id => "%{pars

这是logstash输出过滤器示例

output
{
    elasticsearch
    {
            hosts => ["localhost"]
            sniffing => true
            manage_template => false
            index => "mqtt-index-%{+YYYY.MM.dd}"
            document_id => "%{parsedMessage.device_id}"
            document_type => "iot_data"
    }
}

此代码将现有的_id更改为%{parsedMessage.device_id}。如何通过另一个字段更改_id?

符号不正确,您需要这样做

        document_id => "%{[parsedMessage][device_id]}"

已从筛选器中删除目标选项

过滤器
{
json
{
source=>“消息”
}
}

并使用以下输出创建自定义文档id

output
{
    elasticsearch
    {
            hosts => ["localhost:9200"]
            sniffing => true
            manage_template => false
            index => "mqtt-index-%{+YYYY.MM.dd}"
            document_id => "%{device_id}"
            document_type => "iot_data"
    }
}

你能展示一个活动吗?将此添加到输出部分:
stdout{codec=>rubydebug}
谢谢。但这不是嵌套字段,字段名本身就是parsedMessage.device_idAh!在字段名中添加点不是一个好主意:-)事实上message={“value”:27.6,“datastream_name”:“pressure”,“context”:{“latitude”:19.4,“elevation”:35.9,“longitude”:11.1},“device_id”:9}这是我的消息字段,我已经从这个字段中分离了所有字段,这些字段创建的新字段被解析为message.device.id,parsedMessage.value类似于此请显示从
stdout
输出中获得的内容(用它更新您的问题)是的,我已从json筛选器中删除目标,现在它正在工作