首页 > 解决方案 > 如何更新 Elasticsearch 文档中的单个属性

问题描述

如何更新 Elasticsearch 文档中的单个属性。这就是我们现在正在做的事情,不确定它是否完全线程安全,因为我们看到它有时会失败

Profile profile = profileRepository.findById(id);
profile.setStatus(status);
profileRepository.save(profile)

标签: elasticsearchspring-data-elasticsearch

解决方案


Spring Data Elasticsearch 可能已经为您做到了。您可以通过启用 Spring Data Elasticsearch 的日志记录来检查这一点,并检查发送到 Elasticsearch 的内容。一般来说,Spring Data 会跟踪您对会话对象所做的更改。

另一种方法是使用@Query注释(代码未经测试/验证)

@Query("update Profile set Profile.status = :status)
void updateProfile(String status);

如果这不起作用,您可以使用 Java REST 高级客户端的更新 API https://www.elastic.co/guide/en/elasticsearch/client/java-rest/master/java-rest-high-document-更新.html


推荐阅读