es删除操作大致分为:基于id的单条删除、基于id的批量删除、自定义条件的删除

基于id的单条删除:DeleteRequest

基于id的批量删除:BulkRequest中通过多个DeleteRequest来装载要删除的数据

自定义条件删除:

  通过QueryBuilders中的termQuery(等值匹配)、rangeQuery(范围匹配)、wildcardQuery(模糊匹配)指定搜索条件

  通过QueryBuilders中的boolQuery中的should、must来设置and、or逻辑

  通过DeleteByQueryRequest来构建删除请求,setQuery来装载条件,indices来指定索引

  通过deleteByQuery来发起删除请求(es也是先查询后删除)

单条删除:

    //es单条操作--删除文档(记录)
public String deleteEsDocument(){ //创建删除文档请求
DeleteRequest request = new DeleteRequest(); //设置属性:指定要删除的索引及id值
DeleteRequest delete = request.index("user").id("1001"); try {
//像es服务发送请求
DeleteResponse deleteResult = this.client.delete(delete, RequestOptions.DEFAULT); System.out.println("delde es index result is : " + delete.toString());
} catch (IOException e) {
e.printStackTrace();
}
return "delete es index is complete";
}

批量删除:

    //批量删除(单条件)public String bulkDeleteEsDocument(){

        //获取数据源
List<String> list = setTestData(); //创建批量操作请求
BulkRequest request = new BulkRequest(); int size = list.size();
for(int i=0; i<size; i++){
request.add(new DeleteRequest().index("user").id(list.get(i)));
} BulkResponse delete = null;
try {
delete = this.client.bulk(request, RequestOptions.DEFAULT);
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(delete.status());
return "bulk delete es document complete";
} //批量删除的数据源
private static List<String> setTestData(){ List<String> objects = new ArrayList<>();
objects.add("sAMC7XgBrgVVHTXvmYL_");
objects.add("Pi6t6ngBdcbzHcXaH_iM"); return objects;
}

自定义条件删除:

    //自定义删除条件
@RequestMapping("/customDeleteCondition")
public String customDeleteCondition(){ //设置删除条件名字 == 张三
TermQueryBuilder userNameWhere = QueryBuilders.termQuery("userName.keyword", "张三"); //设置删除条件体重》=10 《=100
RangeQueryBuilder weightRangeWhere = QueryBuilders.rangeQuery("weight");
weightRangeWhere.gte(10);
weightRangeWhere.lte(100); //设置删除条件模糊匹配名字中带t的记录
WildcardQueryBuilder userNameWildCardWhere = QueryBuilders.wildcardQuery("userName.keyword", "*r*"); //装载条件并设置must == and should == or and、or根据业务需要自行调整
BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery();
queryBuilder.should(userNameWhere);
queryBuilder.should(weightRangeWhere);
queryBuilder.should(userNameWildCardWhere); DeleteByQueryRequest deleteByQueryRequest = new DeleteByQueryRequest();//构建删除请求
deleteByQueryRequest.setQuery(queryBuilder);//装载删除条件
deleteByQueryRequest.indices("user");//指定删除索引 try {
this.client.deleteByQuery(deleteByQueryRequest , RequestOptions.DEFAULT);
} catch (IOException e) {
e.printStackTrace();
}
return "complete";
}

特殊情况:

  针对map数据类型的自定义条件删除

  map数据类型在做删除操作时比较特别须写全标识,示例中scoure为字段归属标识,“数学”为字段名,keyword为分词,99为值

  个人猜想此处须单独写出scoure字段归属标识有两个原因:1.此处删除操作的条件是完全脱离实体类进行设置的。2.考虑到字段同名问题须特别指出要修改哪个“数学”

    public void mapTestDelete(){

        //map数据类型在做删除操作时比较特别须写全标识,示例中scoure为字段标识,“数学”为字段名,keyword为分词,99为值
//设置删除条件并装载数据
BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery();
queryBuilder.must(QueryBuilders.termQuery("scoure.数学.keyword", "99")); DeleteByQueryRequest deleteByQueryRequest = new DeleteByQueryRequest();//构建删除请求
deleteByQueryRequest.setQuery(queryBuilder);//装载删除条件
deleteByQueryRequest.indices("map_test");//指定删除索引 try {
this.client.deleteByQuery(deleteByQueryRequest, RequestOptions.DEFAULT);
} catch (IOException e) {
e.printStackTrace();
}
}

elasticsearch RestHighLevelClient 关于document的常用操作 ---------- 删除篇的更多相关文章

  1. Elasticsearch本地环境安装和常用操作

    本篇文章首发于我的头条号Elasticsearch本地环境安装和常用操作,欢迎关注我的头条号和微信公众号"大数据技术和人工智能"(微信搜索bigdata_ai_tech)获取更多干 ...

  2. 数据结构之链表-链表实现及常用操作(C++篇)

    数据结构之链表-链表实现及常用操作(C++篇) 0.摘要 定义 插入节点(单向链表) 删除节点(单向链表) 反向遍历链表 找出中间节点 找出倒数第k个节点 翻转链表 判断两个链表是否相交,并返回相交点 ...

  3. Pandas常用操作 - 删除指定行/指定列

    1. 删除指定行 new_df = df.drop(index='行索引') new_df = df.drop('行索引', axis='index') new_df = df.drop('行索引', ...

  4. iscsi客户端常用操作

    说明 本篇主要记录iscsi的客户端的一些常用的一些操作 iscsi服务端常用操作 删除一个lun tgtadm --lld iscsi --mode logicalunit --op delete ...

  5. ElasticSearch之映射常用操作

    本文案例操作,建议先阅读我之前的文章<ElasticSearch之安装及基本操作API> Mapping (映射)类似关系型数据库中的表的结构定义.我们将数据以 JSON 格式存入到 El ...

  6. Elasticsearch(ES)API 增删查改常用操作

    常用操作 查询所有数据 POST http://192.168.97.173:27009/logstash_test_2018/doc/_search { "query": { & ...

  7. elasticsearch RestHighLevelClient 使用方法及封装工具

    目录 EsClientRHL 更新日志 开发原因: 使用前你应该具有哪些技能 工具功能范围介绍 工具源码结构介绍 开始使用 未来规划 git地址:https://gitee.com/zxporz/ES ...

  8. JS常用操作节点的方法

    js常见的创建dom节点的方法有 createElement() 创建一个元素节点 => 接收参数为string类型的nodename createTextNode() 创建一个文本节点 =&g ...

  9. selenium常用操作,查找元素,操作Cookie,获取截图,获取窗口信息,切换,执行js代码

    目录: 1. 常用操作 2. 查找元素 3. 操作Cookie 4. 获取截图 5. 获取窗口信息 6. 切换 7. 执行JS代码 简介 selenium.webdriver.remote.webdr ...

  10. python os 模块常用操作

    python 2.7 os 常用操作 官方document链接 文件和目录 os.access(path, mode) 读写权限测试 应用: try: fp = open("myfile&q ...

随机推荐

  1. 关闭windows计划重启

    前言 windows 总是自动计划更新 解决方案 需要禁用服务 "Windows Update" 和 "更新 Orchestrator 服务" 首先去这里下载P ...

  2. pip和pip3如何更新

    pip pip install --upgrade pip pip3 pip3 install --upgrade pip

  3. 使用Python完成设备巡检

    在企业网络中,设备巡检是保持网络稳定性和安全性的核心任务.无论是路由器.交换机,还是防火墙和服务器等设备,都需要定期进行巡检,以确保网络设施的正常运行.然而,传统的设备巡检通常是通过手动登录设备.查看 ...

  4. mysql-installer-community-8.0.19.0.msi 的自定义安装与卸载

    一.双击运行安装包执行安装 1.选择Custom,该种方式可以设置安装位置,仅安装所需的组件,点击Next 2.选择需要的组件,点击Advanced Options 3.设置安装位置,点击OK 4.点 ...

  5. docker 版本号说明

    17.03 版本以前 Docker CE 在 17.03 版本之前叫 Docker Engine, 版本说明参考这里 => Docker Engine release notes, 可以看到 D ...

  6. 使用PowerPoint优雅地更改证件照底色

    使用PowerPoint优雅地更改证件照底色 首先我们打开一张空白的演示文稿,并将要修改的证件照进行粘贴.(图片来自窝窝摄影,侵删) 选中图片,点击 格式,再点击 删除背景. 点击标记要保留的区域,对 ...

  7. 开发app步骤总结

    以下是用IDEA后端Java开发(如Spring Boot)与Android Studio前端开发app的逻辑实现步骤详解: 一.技术选择 通信协议:推荐使用RESTful API(HTTP/HTTP ...

  8. 【数据结构与算法】Java链表与递归:移除链表元素

    Java链表与递归:移除链表元素 Java https://leetcode-cn.com/problems/remove-linked-list-elements/solution/javalian ...

  9. pg获取tree完整的数据

    一个表: DRGCode DRGParend DRGName 这样一个tree表结构. 任意查询string,希望得到一个查询完整的tree.怎么做? SELECT * FROM "DRG& ...

  10. Java并发并发编程实战-并发容器和同步工具类

    并发容器 ConcurrentHashMap 设计原理 分段锁(JDK 7) :将数据分成多个段(Segment),每个段独立加锁,不同段的操作可并行执行. CAS + synchronized(JD ...