es update 只更新 选定字段
2019-06-11 本文已影响190人
良人与我
es 保存
如果用spring-data-es jpa 的 save 方法很容易实现
但是会出现如下问题
- 全部更新 开销比较大。
- 并发时候容易出现数据覆盖。
那 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