Elasticsearch 7.14.0中_version全局递增异常及修改方法咨询
问题解决:Elasticsearch _version字段全局递增而非文档级的处理方案
问题原因
Kafka Connect的Elasticsearch Sink默认或当前配置使用了外部版本控制(external versioning),而非Elasticsearch原生的内部版本机制:
- 启用外部版本时,Sink会将Kafka消息中指定字段的数值直接作为ES文档的
_version值。如果这个字段是全局递增类型(比如Kafka偏移量、全局自增ID等),就会导致ES的_version呈现全局级大数值,且更新时增幅远超1。 - Elasticsearch原生的
_version文档级递增逻辑,仅在使用**内部版本控制(internal versioning)**时生效。
解决步骤
调整Kafka Connect Elasticsearch Sink的版本配置
- 在Sink的配置文件中,添加或修改以下参数:
version.type=internal - 如果之前配置过
version.field(指定用Kafka消息中的某个字段作为版本号),请移除该配置项,让Elasticsearch自行管理文档版本。
- 在Sink的配置文件中,添加或修改以下参数:
验证修改效果
- 重启Kafka Connect任务,重新同步数据后,针对某条特定文档执行更新操作,检查其
_version字段:此时该字段应仅在自身基础上递增1,不再出现跨文档的全局大数值跳变。
- 重启Kafka Connect任务,重新同步数据后,针对某条特定文档执行更新操作,检查其
注意事项
如果之前已通过外部版本同步了数据,切换为内部版本控制后,现有文档的_version不会重置,后续更新会基于当前版本号继续按文档级递增(例如某文档当前_version为10000,下一次更新会变为10001,之后每次更新+1),这属于正常行为。
内容的提问来源于stack exchange,提问作者ByeBye
相关产品推荐
相关产品推荐

