我爱编程技术干货

es update 只更新 选定字段

2019-06-11  本文已影响190人  良人与我

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
上一篇下一篇

猜你喜欢

热点阅读