elasticsearch RestHighLevelClient 关于document的常用操作 ---------- 删除篇
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的常用操作 ---------- 删除篇的更多相关文章
- Elasticsearch本地环境安装和常用操作
本篇文章首发于我的头条号Elasticsearch本地环境安装和常用操作,欢迎关注我的头条号和微信公众号"大数据技术和人工智能"(微信搜索bigdata_ai_tech)获取更多干 ...
- 数据结构之链表-链表实现及常用操作(C++篇)
数据结构之链表-链表实现及常用操作(C++篇) 0.摘要 定义 插入节点(单向链表) 删除节点(单向链表) 反向遍历链表 找出中间节点 找出倒数第k个节点 翻转链表 判断两个链表是否相交,并返回相交点 ...
- Pandas常用操作 - 删除指定行/指定列
1. 删除指定行 new_df = df.drop(index='行索引') new_df = df.drop('行索引', axis='index') new_df = df.drop('行索引', ...
- iscsi客户端常用操作
说明 本篇主要记录iscsi的客户端的一些常用的一些操作 iscsi服务端常用操作 删除一个lun tgtadm --lld iscsi --mode logicalunit --op delete ...
- ElasticSearch之映射常用操作
本文案例操作,建议先阅读我之前的文章<ElasticSearch之安装及基本操作API> Mapping (映射)类似关系型数据库中的表的结构定义.我们将数据以 JSON 格式存入到 El ...
- Elasticsearch(ES)API 增删查改常用操作
常用操作 查询所有数据 POST http://192.168.97.173:27009/logstash_test_2018/doc/_search { "query": { & ...
- elasticsearch RestHighLevelClient 使用方法及封装工具
目录 EsClientRHL 更新日志 开发原因: 使用前你应该具有哪些技能 工具功能范围介绍 工具源码结构介绍 开始使用 未来规划 git地址:https://gitee.com/zxporz/ES ...
- JS常用操作节点的方法
js常见的创建dom节点的方法有 createElement() 创建一个元素节点 => 接收参数为string类型的nodename createTextNode() 创建一个文本节点 =&g ...
- selenium常用操作,查找元素,操作Cookie,获取截图,获取窗口信息,切换,执行js代码
目录: 1. 常用操作 2. 查找元素 3. 操作Cookie 4. 获取截图 5. 获取窗口信息 6. 切换 7. 执行JS代码 简介 selenium.webdriver.remote.webdr ...
- python os 模块常用操作
python 2.7 os 常用操作 官方document链接 文件和目录 os.access(path, mode) 读写权限测试 应用: try: fp = open("myfile&q ...
随机推荐
- nnUNet 使用方法
首先明确分割任务. 其次明确研究方法和步骤. 再做好前期准备,如数据集的采集.标注以及其中的训练集/测试集划分. 其中的参考链接: (四:2020.07.28)nnUNet最舒服的训练教程(让我的奶奶 ...
- directory 用于数据泵 导入、导出创建的目录。
1.查询directory目录 select * from dba_directories; 2.创建或者修改 directory目录 create or replace directory 目录名称 ...
- 深入掌握Map的这8个操作方法,让代码更简洁优雅
Map 是我们经常使用的数据结构接口,它的子类 HashMap.ConcurrentHashMap 也是我们使用比较频繁的集合. 了解了 Map 接口中的方法,也就相当于知道了其子类中的可用方法,管它 ...
- BUUCTF---Morse
1.题目 -..../.----/-..../-..../-..../...--/--.../....-/-..../-..../--.../-.../...--/.----/--.../...--/ ...
- RabbitMQ持久化+消息执行优先级
持久化 channel.QueueDeclare(queue:"hello",//队列名 durable:true,//持久化 exclusive:false,//排他性,该 ...
- 【Maven】生命周期
Maven 有三个相互独立的生命周期:Clean 生命周期.build 生命周期.site 生命周期. 各个构建环节执行的顺序:不能打乱顺序,必须按照既定的正确顺序来执行. Maven 的核心程序中定 ...
- 【软件】Ubuntu下QT的安装和使用
[软件]Ubuntu下QT的安装和使用 零.前言 QT是应用得比较广泛的程序框架,是因为其跨平台特性比较好,且用C/C++作为开发语言,性能也比较好,故本文介绍如何安装和使用QT,用的版本是QT 6. ...
- study Rust-3【表达式和函数】
1. Rust与优美的pascal很相似.但是这个表达式概念很有意思.见上图.[1.条件赋值语句:2.表达式返回值] 2.注意变量和隐藏变量的概念,这个也有创意. 3.函数在Rust无处不在.
- 太赞了!两个技巧帮你记住复杂 Linux 命令!
Linux 经历这么多个年头了,其中命令越来越多,又加上参数的多种多样,就算是实打实的高手也没有十足的把握能把各种命令运用得炉火纯青,就别说那些初学者了. 面对这些复杂难记的命令,网上的一些工具如 K ...
- 为什么 G1 垃圾收集器不维护年轻代到老年代的记忆集?
为什么 G1 垃圾收集器不维护年轻代到老年代的记忆集? 在 G1 垃圾收集器中,不维护年轻代到老年代的记忆集(Remembered Set, RSet)是因为其设计特点和优化策略使得这种记忆集的维护既 ...