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. Selenium KPI接口 附件上传

    实现功能 拖拽图片到百度上传图片搜索功能区域. 定位.send_keys(r'图片路径') 导入相关包 from selenium import webdriver from time import ...

  2. ubuntu20.04使用EasyConnect

    起因:BUAA校外访问内网vpn的客户端 用的学校vpn内下载的deb包EasyConnect_x64_7_6_7_3.deb,就直接sudo apt install安装了,之后应用的目录在/usr/ ...

  3. go errors转string

    前言 在 Go 中如果声明了两个字符相同的错误,但命名是新的变量,此时两个错误不相等 package main import ( "errors" "fmt" ...

  4. 冒泡排序(LOW)

    博客地址:https://www.cnblogs.com/zylyehuo/ # _*_coding:utf-8_*_ import random def bubble_sort(li): for i ...

  5. [WPF]XAML中使用IMultiValueConverter实现Command的多参数传参

    问题 如何对ICommand传入多个参数? 背景 最近在做一个WPF的开发,有多个相近的功能写了不同的Command,因为要对应不同的对象.因为是CtrlCV,显得代码有点冗赘不够优雅,但是IComm ...

  6. 入门Dify平台:工作流节点分析

    要让智能体在实际应用中表现出色,掌握工作流的使用至关重要.今天,我们将深入探讨Dify平台中的各个节点的功能,了解它们的使用方法以及常见的应用场景.通过对这些节点的全面了解,将能够高效地设计和优化智能 ...

  7. MySQL-全句锁、表锁和元数据锁

    全局锁 全局锁是锁住整个数据库实例,只能读,任何关于更新操作的语句都会阻塞. 全局锁的适用场景 针对数据库做全库的逻辑备份操作时,需要使用全局锁. 全局锁的影响: 如果在主库上做全局锁操作,业务基本停 ...

  8. Anonymous打靶学习笔记(5)

    参考视频https://www.bilibili.com/video/BV1XufaYAEKc/?spm_id_from=333.1387.search.video_card.click 常见的100 ...

  9. verilog利用线性插值实现正弦波生成器(dds)

    verilog实现线性插值实现正弦波生成器 ​ 最近在项目上遇到一个需要在低资源FPGA上实现FFT逻辑的项目,而且要求实现窗函数.对于窗函数来说,莫非是实现正弦波生成器,正弦波生成器可以利用DDS模 ...

  10. Git常用命令大全:git命令基本用法

    1. 常用的git命令 Git 常用的六个命令是什么? ·"git clone"克隆代码: ·"git log"查看日志: ·"git tag&quo ...