spring中按照莫属性值批量删除Elasticsearch索引中的文档

spring中按照莫属性值批量删除Elasticsearch中的文档

介绍:
Elasticsearch整合springboot项目后,可以从java代码中创建索引,创建文档
也可以删除文档.
进行按照某一属性值批量删除文档:

演示,根据商品spuId删除对应的库存
spring中按照莫属性值批量删除Elasticsearch索引中的文档_第1张图片
演示删除这两条文档

索引在java中是有映射类的,在创建索引的时候就写好了,例如SkuInfo
spring中按照莫属性值批量删除Elasticsearch索引中的文档_第2张图片
编写dao层,在dao接口中自定义一个查询方法,方法只要按照es接口的规范书写,会自动生成实现.

public interface ESdao extends ElasticsearchRepository<SkuInfo,Long> {
    /**
     * 自定义查询方法,从索引库查询文档,按照spuid属性查找
     * @param spuId 商品id
     * @return
     */
    List<SkuInfo> querySkuInfoBySpuId(String spuId);
}

方法调用:
先查询出集合,遍历集合,使用dao自带的delete方法删除
也可以使用deleteAll方法删除,我使用了λ表达式

 @Autowired
    private ESdao eSdao;
  @Override
    public void deleteDataToEs(String spuId) {
        List<SkuInfo> skuInfos = eSdao.querySkuInfoBySpuId(spuId);
        /*for (SkuInfo skuInfo : skuInfos) {
            eSdao.delete(skuInfo);
        }
        eSdao.deleteAll(new Iterable() {
            @Override
            public Iterator iterator() {
                return skuInfos.iterator();
            }
        });*/
        eSdao.deleteAll(()->skuInfos.iterator());
    }

测试运行
spring中按照莫属性值批量删除Elasticsearch索引中的文档_第3张图片已经查询不到了,成功从索引库中删除了这两条数据
spring中按照莫属性值批量删除Elasticsearch索引中的文档_第4张图片

你可能感兴趣的:(编程快乐)