Spring项目中Elasticsearch更新查询已废弃,如何改用新API?
解决Spring Data Elasticsearch更新文档的废弃警告问题
问题说明
使用Spring Data Elasticsearch更新文档时,现有代码触发了Elasticsearch类型移除的废弃警告,原代码调用的是带文档类型的旧端点/{index}/_doc/{id}/_update,需要切换到官方推荐的新端点/{index}/_update/{id}。
修改方案
在Spring Data Elasticsearch 4.x版本(对应你的4.3.4版本)中,替换原有的UpdateQuery.builder()构建方式,改用专门的静态工厂方法UpdateQuery.updateById()来构建更新查询,即可自动适配新的无类型端点。
修改后的代码
UpdateQuery.updateById(it) .withDocument(document) .build();
原理说明
- 原代码使用
UpdateQuery.builder(it)时,底层会默认带上_doc文档类型参数,这是Elasticsearch 7.x版本中已废弃的设计(7.x开始逐步移除文档类型概念)。 UpdateQuery.updateById(id)是Spring Data Elasticsearch为适配Elasticsearch新API提供的方法,构建的查询会直接调用/{index}/_update/{id}端点,不再包含文档类型参数,彻底消除废弃警告。
版本适配验证
你的依赖版本组合(Spring Boot 2.6.7 + Spring Data Elasticsearch 4.3.4 + Elasticsearch 7.15.2)完全兼容该修改:
- Spring Data Elasticsearch 4.x系列原生适配Elasticsearch 7.x的无类型API规范
updateById方法在4.3.4版本中属于稳定可用的标准API
内容的提问来源于stack exchange,提问作者Ryan Kang
相关产品推荐
相关产品推荐

