美文网首页我爱编程技术干货
es update 只更新 选定字段

es update 只更新 选定字段

作者: 良人与我 | 来源:发表于2019-06-11 17:50 被阅读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

    相关文章

      网友评论

        本文标题:es update 只更新 选定字段

        本文链接:https://www.haomeiwen.com/subject/uzaaxctx.html