【问题标题】:How to create custom document _id in logstash?如何在logstash中创建自定义文档_id?
【发布时间】:2019-02-18 13:37:41
【问题描述】:

这是示例 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?

【问题讨论】:

    标签: elasticsearch logstash


    【解决方案1】:

    从过滤器中删除了目标选项。

    filter { json { source => "message" } }

    并使用以下输出来创建自定义文档 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"
        }
    }
    

    【讨论】:

    • 是的,我从 json 过滤器中删除了目标,现在它可以工作了
    【解决方案2】:

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

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

    【讨论】:

    • 你能展示一个活动吗?在你的输出部分添加这个:stdout{codec=>rubydebug}
    • 谢谢。但这不是嵌套字段,字段名称本身是 parsedMessage.device_id
    • 啊!在字段名称中包含点不是一个好主意:-)
    • 实际上 message = {"value": 27.6, "datastream_name": "pressure", "context": {"latitude": 19.4, "elevation": 35.9, "longitude": 11.1}, "device_id": 9} 这是我的消息字段,我已经从这个字段中分离了所有字段,即创建的新字段是 parsedMessage.device.id , parsedMessage.value 之类的
    • 请展示你从stdout 输出中得到了什么(用它更新你的问题)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-12
    • 1970-01-01
    • 1970-01-01
    • 2012-01-11
    • 2021-10-06
    • 1970-01-01
    • 2014-01-20
    相关资源
    最近更新 更多