You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Logstash对接OpenSearch输出时无法获取document_id问题求助

解决Logstash迁移OpenSearch数据时document_id无法获取原文档ID的问题

核心解决步骤

  • 开启输入插件的元数据收集
    在input段的opensearch配置中添加docinfo => true,这个参数会将原OpenSearch文档的_id、_index等元数据注入到Logstash事件的[@metadata]字段下。
  • 正确引用元数据中的ID
    在output段的opensearch配置里,将document_id设置为%{[@metadata][_id]},即可正确读取原文档的ID。

修改后的完整配置

input {
    opensearch {
        hosts =>  ["http://192.168.1.245:8443"]
        index =>  "crawl"
        query =>  '{ "query": { "match_all": {}} }'
        docinfo => true  # 开启文档元数据收集
    }
}

output {
  opensearch {
    hosts => ["http://192.168.1.245:9200"]
    index => "crawl"
    document_id => "%{[@metadata][_id]}"  # 正确引用原文档ID
    doc_as_upsert => true 
  }
  stdout { codec => rubydebug { metadata => true } }
}

补充说明

你之前尝试的各种写法无效,是因为默认情况下Logstash的OpenSearch输入插件不会把原文档的_id暴露到事件的普通字段里,必须通过docinfo => true开启元数据收集才能访问到。
可以通过查看stdout的输出(已开启metadata => true),确认[@metadata][_id]字段是否存在,验证配置是否生效。

内容的提问来源于stack exchange,提问作者razor8088

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 03:47:16