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

Logstash迁移ES数据时_id字段值不一致问题求助

解决Logstash克隆Elasticsearch数据时保留源文档_id的问题

要保留源Elasticsearch 2.3中的_id值到目标8.9集群,需要调整Logstash的输入和输出配置,让输入插件携带源文档的元数据,同时输出插件指定使用该元数据中的_id:

修改后的Logstash配置

input {
  elasticsearch {
    hosts => "XXXXXXXXX"
    index => "mon"
    docinfo => true  # 开启后会将源文档的_id、_index等元数据存入[@metadata]
  }
}

output {
  elasticsearch {
    hosts => "XXXXXX"
    index => "mon"
    user => "XXXXX"
    password => "XXXXXX"
    document_id => "%{[@metadata][_id]}"  # 指定使用源文档的_id作为目标文档的_id
  }
}

配置说明

  • docinfo => true:在Elasticsearch输入插件中启用该参数后,源文档的_id、_index等元数据会被存入事件的[@metadata]字段下,不会混入最终的_source,仅用于元数据传递。
  • document_id => "%{[@metadata][_id]}":在Elasticsearch输出插件中指定该参数,Logstash会直接将源文档的_id作为目标文档的_id写入,替代默认生成的随机字符串。

验证配置后重启Logstash管道,目标ES8.9集群中的文档_id就会和源ES2.3完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 16:44:59