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
相关产品推荐
相关产品推荐

