- 浏览: 695114 次
- 性别:
- 来自: 长沙
文章分类
- 全部博客 (364)
- quick start (57)
- bboss aop (43)
- bboss mvc (48)
- bboss persistent (96)
- bboss taglib (30)
- bboss event (10)
- bbossgroups (52)
- bboss (32)
- bboss会话共享 (17)
- bboss rpc (7)
- bboss 国际化 (5)
- bboss 序列化 (9)
- bboss cxf webservice (8)
- bboss hessian (3)
- bboss 安全认证SSO (15)
- bboss 工作流 (6)
- 平台 (18)
- bboss quartz (3)
- 杂谈 (5)
- 大数据 (1)
- bboss elastic (24)
- bboss http (1)
- bboss kafka (1)
- Elasticsearch Scroll和Slice Scroll查询API使用案例 (1)
最新评论
-
qianhao123:
...
采用gradle构建和发布bboss方法介绍 -
qianhao123:
[img][/img]
采用gradle构建和发布bboss方法介绍 -
yin_bp:
欢迎大家参与working
高性能elasticsearch ORM开发库使用介绍 -
qq641879434:
万分感谢
bboss 持久层sql xml配置文件编写和加载方法介绍 -
yin_bp:
qq641879434 写道怎么设置配置文件 可以查看执行的S ...
bboss 持久层sql xml配置文件编写和加载方法介绍
Elasticsearch Delete/UpdateByQuery案例
- 博客分类:
- bboss elastic
Elasticsearch Delete/UpdateByQuery案例分享
本文涉及技术点:
1.准备工作
参考文档《高性能elasticsearch ORM开发库使用介绍》导入和配置es客户端
2.编写创建索引表和初始化数据方法
创建索引表和初始化数据的组件DocumentCRUD 实现本文不做重点介绍,请访问视频教程了解:
3.定义DeleteByQuery/UpdateByQuery对应的Dsl脚本
新建配置文件-esmapper/byquery.xml
4.实现DeleteByQuery功能
5.执行DeleteByQuery junit单元测试方法
6.定义updatebyquery方法
定义两个updatebyquery方法,一个带query dsl,一个不带query dsl:
7.执行updatebyquery junit单元测试方法
8.参考文档
https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-delete-by-query.html
https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-update-by-query.html
本文示例代码对应的源码工程地址:
https://gitee.com/bboss/eshelloword
本文对应的java文件:
https://gitee.com/bboss/eshelloword/blob/master/src/main/java/org/bboss/elasticsearchtest/byquery/DeleteUdateByQuery.java
https://gitee.com/bboss/eshelloword/blob/master/src/test/java/org/bboss/elasticsearchtest/crud/DeleteUdateByQueryTest.java
本文对应的dsl配置文件:
https://gitee.com/bboss/eshelloword/blob/master/src/main/resources/esmapper/byquery.xml
本文涉及技术点:
- DeleteByQuery/UpdateByQuery
- Count文档统计Api
1.准备工作
参考文档《高性能elasticsearch ORM开发库使用介绍》导入和配置es客户端
2.编写创建索引表和初始化数据方法
创建索引表和初始化数据的组件DocumentCRUD 实现本文不做重点介绍,请访问视频教程了解:
/** * 创建索引表并导入测试数据 */ public void initIndiceAndData(){ DocumentCRUD documentCRUD = new DocumentCRUD(); documentCRUD.testCreateIndice();//创建索引表 documentCRUD.testBulkAddDocument();//导入测试数据 }
3.定义DeleteByQuery/UpdateByQuery对应的Dsl脚本
新建配置文件-esmapper/byquery.xml
<properties> <!-- updateByquery deleteByquery dsl配置之文件 --> <property name="updateByQuery"> <![CDATA[ { "query": { "bool": { "filter": [ { ## 多值检索,查找多个应用名称对应的文档记录 "terms": { "applicationName.keyword": [#[applicationName1],#[applicationName2]] } }, { ## 时间范围检索,返回对应时间范围内的记录,接受long型的值 "range": { "agentStarttime": { "gte": #[startTime],##统计开始时间 "lt": #[endTime] ##统计截止时间 } } } ] } } } ]]> </property> <property name="deleteByQuery"> <![CDATA[ { "query": { "bool": { "filter": [ { ## 多值检索,查找多个应用名称对应的文档记录 "terms": { "applicationName.keyword": [#[applicationName1],#[applicationName2]] } }, { ## 时间范围检索,返回对应时间范围内的记录,接受long型的值 "range": { "agentStarttime": { "gte": #[startTime],##统计开始时间 "lt": #[endTime] ##统计截止时间 } } } ] } } } ]]> </property> </properties>
4.实现DeleteByQuery功能
定义实现DeleteByQuery功能的方法 /** * 验证DeleteByQuery功能 * @throws ParseException */ public void deleteByQuery() throws ParseException { ClientInterface clientUtil = ElasticSearchHelper.getConfigRestClientUtil("esmapper/byquery.xml"); //设定DeleteByQuery查询条件,通过map传递变量参数值,key对于dsl中的变量名称 //dsl中有四个变量 // applicationName1 // applicationName2 // startTime // endTime Map<String,Object> params = new HashMap<String,Object>(); //设置applicationName1和applicationName2两个变量的值 params.put("applicationName1","blackcatdemo2"); params.put("applicationName2","blackcatdemo3"); DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //设置时间范围,时间参数接受long值 params.put("startTime",dateFormat.parse("2017-09-02 00:00:00").getTime()); params.put("endTime",new Date().getTime()); //通过count api先查询数据是否存在 long totalSize = clientUtil.count("demo","deleteByQuery",params); System.out.println("---------------------------------删除前查询,验证数据是否存在:totalSize="+totalSize); if(totalSize > 0) {//如果有数据,则通过by query删除之,为了实时查看删除效果,启用了强制刷新机制 //执行DeleteByQuery操作 String result = clientUtil.deleteByQuery("demo/_delete_by_query?refresh", "deleteByQuery", params); System.out.println(result); //删除后再次查询,验证数据是否被删除成功 totalSize = clientUtil.count("demo","deleteByQuery",params); System.out.println("---------------------------------删除后再次查询,验证数据是否被删除:totalSize="+totalSize); } }
5.执行DeleteByQuery junit单元测试方法
@Test public void testDeleteByQuery() throws ParseException { DeleteUdateByQuery deleteUdateByQuery = new DeleteUdateByQuery(); deleteUdateByQuery.initIndiceAndData();//初始化索引表和测试数据 deleteUdateByQuery.deleteByQuery();//执行deleteByquery }
6.定义updatebyquery方法
定义两个updatebyquery方法,一个带query dsl,一个不带query dsl:
/** * 验证simpleUpdateByQuery功能 */ public void simpleUpdateByQuery(){ ClientInterface clientUtil = ElasticSearchHelper.getRestClientUtil(); String result = clientUtil.updateByQuery("demo/_update_by_query?conflicts=proceed"); System.out.println("******************simpleUpdateByQuery result:"+result); } /** * 验证带查询条件UpdateByQuery功能 * @throws ParseException */ public void updateByQueryWithCondition() throws ParseException { ClientInterface clientUtil = ElasticSearchHelper.getConfigRestClientUtil("esmapper/byquery.xml"); //设定查询条件,通过map传递变量参数值,key对于dsl中的变量名称 //dsl中有四个变量 // applicationName1 // applicationName2 // startTime // endTime Map<String,Object> params = new HashMap<String,Object>(); //设置applicationName1和applicationName2两个变量的值 params.put("applicationName1","blackcatdemo2"); params.put("applicationName2","blackcatdemo3"); DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //设置时间范围,时间参数接受long值 params.put("startTime",dateFormat.parse("2017-09-02 00:00:00").getTime()); params.put("endTime",new Date().getTime()); String result = clientUtil.updateByQuery("demo/_update_by_query?conflicts=proceed","updateByQuery",params); System.out.println("******************updateByQueryWithCondition result:"+result); }
7.执行updatebyquery junit单元测试方法
@Test public void testUpdateByQuery() throws ParseException { DeleteUdateByQuery deleteUdateByQuery = new DeleteUdateByQuery(); deleteUdateByQuery.initIndiceAndData();//初始化索引表和测试数据 deleteUdateByQuery.simpleUpdateByQuery(); deleteUdateByQuery.updateByQueryWithCondition(); }
8.参考文档
https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-delete-by-query.html
https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-update-by-query.html
本文示例代码对应的源码工程地址:
https://gitee.com/bboss/eshelloword
本文对应的java文件:
https://gitee.com/bboss/eshelloword/blob/master/src/main/java/org/bboss/elasticsearchtest/byquery/DeleteUdateByQuery.java
https://gitee.com/bboss/eshelloword/blob/master/src/test/java/org/bboss/elasticsearchtest/crud/DeleteUdateByQueryTest.java
本文对应的dsl配置文件:
https://gitee.com/bboss/eshelloword/blob/master/src/main/resources/esmapper/byquery.xml
发表评论
-
一组获取Elasticsearch 索引表所有文档API使用案例
2018-11-18 16:02 3155The best elasticsearch highle ... -
Elasticsearch Scroll和Slice Scroll查询API使用案例
2018-09-16 18:49 3978Elasticsearch Scroll和Slice Scro ... -
数据库数据导入Elasticsearch案例分享
2018-09-16 18:42 6394The best elasticsearch highleve ... -
Spring Boot整合ElasticSearch单/多集群案例
2018-07-07 20:12 9954Spring Boot整合ElasticSearch单个集群和 ... -
ElasticSearch DSL Script使用案例分享
2018-06-28 23:52 6320the best elasticsearch highleve ... -
Elasticsearch 6.3.0 SQL功能使用案例分享
2018-06-25 19:12 3393The best elasticsearch highleve ... -
数据库数据导入Elasticsearch案例分享
2018-06-21 22:56 433The best elasticsearch highleve ... -
ElasticSearch From-Size分页案例
2018-06-14 00:17 3495ElasticSearch From-Size分页案例 1. ... -
ElasticSearch客户端注解使用介绍
2018-05-30 00:19 2521The best elasticsearch highleve ... -
基于自定义配置文件初始化ElasticSearch客户端方法介绍
2018-05-24 18:56 1573基于自定义配置文件初始化ElasticSearch客户端方法介 ... -
Elasticsearch关键词高亮检索案例分享
2018-05-10 22:18 62861.准备工作 参考文档《集成Elasticsearch Res ... -
判断ElasticSearch索引Indice和索引类型是否存在
2018-05-05 23:54 8602The best elasticsearch highleve ... -
快速集成Elasticsearch Restful API案例
2018-04-26 14:27 3249The best elasticsearch highleve ... -
Elasticsearch source filter检索案例
2018-04-24 13:00 2339摘要: the best elasticsearch high ... -
Elasticsearch search after分页检索案例
2018-04-21 10:36 3192Elasticsearch search after分页检索案 ... -
Elasticsearch返回父子数据关联查询案例
2018-04-13 12:36 4800在《Elasticsearch 父子关 ... -
Elasticsearch Sliced Scroll分页检索案例分享
2018-04-02 18:28 3834Elasticsearch Sliced Scroll分页检索 ... -
Elasticsearch地理位置维护及检索案例分享
2018-03-31 21:36 1741Elasticsearch地理位置信息维护及检索案例分享 1 ... -
Elasticsearch Scroll分页检索案例分享
2018-03-28 20:40 4138Elasticsearch Scroll分页检索案例分享 1 ... -
Elasticsearch Mget、GetDocSource、索引部分更新案例分享
2018-03-25 08:55 12841.前期准备 参考文档《高性能elasticsearch OR ...
相关推荐
**Elasticsearch插件Delete-by-Query详解** 在Elasticsearch中,删除操作通常是针对单个文档进行的,但有时我们需要删除满足特定条件的一大批文档。这时,`Delete-by-Query`插件就显得尤为重要。它允许我们通过一个...
【作品名称】:SpringBoot操作Elasticsearch的实战案例,elasticsearch 2.4.5/5.6.1 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 ...
jar包,官方版本,自测可用
docker run --name elasticsearch7.16.3 -p 127.0.0.1:9200:9200 -p 127.0.0.1:9300:9300 -e "discovery.type=single-node" -v /Users/xingyue/Home/xingyue/学习/工程化/es/elasticsearch.yml:/usr/share/elastic...
jar包,官方版本,自测可用
以下是Elasticsearch数据库的下载、配置以及使用案例和项目的基本指南: ### 下载Elasticsearch 1. 访问Elasticsearch的官方网站:[https://www.elastic.co/](https://www.elastic.co/) 2. 转到下载页面:...
docker run --name elasticsearch7.16.3 -p 127.0.0.1:9200:9200 -p 127.0.0.1:9300:9300 -e "discovery.type=single-node" -v /Users/xingyue/Home/xingyue/学习/工程化/es/elasticsearch.yml:/usr/share/elastic...
docker run --name elasticsearch7.16.3 -p 127.0.0.1:9200:9200 -p 127.0.0.1:9300:9300 -e "discovery.type=single-node" -v /Users/xingyue/Home/xingyue/学习/工程化/es/elasticsearch.yml:/usr/share/elastic...
消费kafka数据,然后批量导入到Elasticsearch,本例子使用的kafka版本0.10,es版本是6.4,使用bulk方式批量导入到es中,也可以一条一条的导入,不过比较慢。 <groupId>org.elasticsearch</groupId> <artifactId>...
该安装包实现利用给定参数安装单机版或者集群版es数据库,指定参数后安装过程全自动,自动修改系统内核,配置jdk,自动识别并配置内存,自动根据节点数配置集群脑溢节点配置数。涉及到以下操作 1、自动检测配置java...
Java操作Elasticsearch 5.x的Demo详解 在大数据时代,Elasticsearch作为一个高效、可扩展的全文搜索引擎,被广泛应用于日志分析、实时监控、数据挖掘等领域。本篇文章将详细解析如何使用Java API来操作Elastic...
/home/elk/es/elasticsearch-2.4.5/bin/elasticsearch >>/home/elk/logs/elasticsearch.log & ``` 或 ``` cd /home/elk/es/elasticsearch-7.5.2/bin ./elasticsearch >>/home/elk/es/logs/elasticsearch.log & ```...
java操作ElasticSearch的工具类。需要添加依赖: <!-- ElasticSearch依赖 --> <groupId>io.searchbox</groupId> <artifactId>jest</artifactId> <version>6.3.1</version> </dependency> <!-- ...
### Elasticsearch数据库的下载、配置与使用案例 #### 一、Elasticsearch数据库的下载与安装 **1.1 下载与解压** - **下载Elasticsearch:** - **官方网站下载:** 访问Elasticsearch官方网站...
Elasticsearch 是一个流行的开源全文搜索引擎,常用于大数据分析和实时数据检索。然而,如果没有正确配置安全设置,它可能会暴露于未授权访问的风险中,这可能导致数据泄露或恶意操作。本文将详细讲解如何修复 ...
在本"elasticsearch+spring小案例"中,我们将探讨如何集成Elasticsearch 6.1.2版本与Spring框架,以便在Java应用中利用Elasticsearch的强大搜索功能。Elasticsearch是一个分布式、RESTful风格的搜索和数据分析引擎,...
Elasticsearch是一个开源的全文搜索引擎,广泛应用于大数据分析和实时搜索场景。它的最新版本为7.14.0,这是专为Linux x86_64架构设计的。在这个版本中,Elasticsearch提供了一系列增强的功能和性能优化,旨在提高...
**Elasticsearch官方提供数据案例account.json** Elasticsearch是一个高度可扩展的开源全文搜索和分析引擎,它允许用户快速地存储、搜索和分析大量数据。在这个案例中,"account.json"是Elasticsearch官方提供的一...
### Elasticsearch 数据库下载、配置与使用案例详解 #### 一、Elasticsearch 概述 Elasticsearch 是一款基于 Lucene 开发的分布式、RESTful 风格的搜索和分析引擎,它能够处理大量的数据并提供快速的搜索响应。...
1. **Elasticsearch基础**:Elasticsearch(ES)是一个开源的、分布式全文搜索引擎,它提供了实时数据分析的能力,广泛用于日志分析、监控、搜索应用等领域。其核心特性包括分布式、RESTful接口、实时性、可扩展性和...