es update 只更新 选定字段

es 保存
如果用spring-data-es jpa 的 save 方法很容易实现
但是会出现如下问题

  1. 全部更新 开销比较大。
  2. 并发时候容易出现数据覆盖。

那 es 文档如何只更新 需要update的字段呢?

下面给出了一个demon

实体类

@NoArgsConstructor
@Data
@Document(indexName = "customer",
        type = "customer",
        shards = 2,
        refreshInterval =  "10s")
public class Customer {

    @Id
    private String id;

    @Field(type = FieldType.Keyword)
    private String firstName;

    private String lastName;

    private Integer age;

    private String des;

    private String hobby;

    public Customer(String firstName, String lastName , Integer age) {
        this.firstName = firstName;
        this.lastName = lastName;
        this.age = age;
    }
}

更新方法

@Test
    public void testUpdate(){
        Customer customer = new Customer("river-test1", "希望的田野", 33);
        customer.setId("Auon-GoB3uyabjEXAYng");
        UpdateQuery updateQuery = new UpdateQuery();
        updateQuery.setId(customer.getId());
        updateQuery.setClazz(Customer.class);
        UpdateRequest request = new UpdateRequest();
        request.doc(new Gson().toJson(customer), XContentType.JSON);
        updateQuery.setUpdateRequest(request);
        elasticsearchTemplate.update(updateQuery);
    }
image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容