Elasticsearch Delete/UpdateByQuery案例

Elasticsearch Delete/UpdateByQuery案例分享

本文涉及技术点:

  1. DeleteByQuery/UpdateByQuery
  2. Count文档统计Api

1.准备工作

参考文档《》导入和配置es客户端

2.编写创建索引表和初始化数据方法

创建索引表和初始化数据的组件实现本文不做重点介绍,请访问视频教程了解:

3.定义DeleteByQuery/UpdateByQuery对应的Dsl脚本

  1. <!--
  2. updateByquery
  3. deleteByquery
  4. dsl配置之文件
  5. -->
  6. <property name="updateByQuery">
  7. <![CDATA[
  8. {
  9. "query": {
  10. "bool": {
  11. "filter": [
  12. { ## 多值检索,查找多个应用名称对应的文档记录
  13. "terms": {
  14. "applicationName.keyword": [#[applicationName1],#[applicationName2]]
  15. }
  16. { ## 时间范围检索,返回对应时间范围内的记录,接受long型的值
  17. "range": {
  18. "agentStarttime": {
  19. "gte": #[startTime],##统计开始时间
  20. "lt": #[endTime] ##统计截止时间
  21. }
  22. }
  23. ]
  24. }
  25. }
  26. }
  27. ]]>
  28. </property>
  29. <property name="deleteByQuery">
  30. <![CDATA[
  31. {
  32. "query": {
  33. "bool": {
  34. "filter": [
  35. { ## 多值检索,查找多个应用名称对应的文档记录
  36. "terms": {
  37. "applicationName.keyword": [#[applicationName1],#[applicationName2]]
  38. }
  39. },
  40. "range": {
  41. "agentStarttime": {
  42. "lt": #[endTime] ##统计截止时间
  43. }
  44. }
  45. }
  46. ]
  47. }
  48. }
  49. }
  50. ]]>
  51. </property>
  52. </properties>

4.实现DeleteByQuery功能

定义实现DeleteByQuery功能的方法

5.执行DeleteByQuery junit单元测试方法

  1. @Test
  2. public void testDeleteByQuery() throws ParseException {
  3. DeleteUdateByQuery deleteUdateByQuery = new DeleteUdateByQuery();
  4. deleteUdateByQuery.initIndiceAndData();//初始化索引表和测试数据
  5. deleteUdateByQuery.deleteByQuery();//执行deleteByquery
  6. }

6.定义updatebyquery方法

定义两个updatebyquery方法,一个带query dsl,一个不带query dsl:

7.执行updatebyquery junit单元测试方法

  1. @Test
  2. public void testUpdateByQuery() throws ParseException {
  3. DeleteUdateByQuery deleteUdateByQuery = new DeleteUdateByQuery();
  4. deleteUdateByQuery.initIndiceAndData();//初始化索引表和测试数据
  5. deleteUdateByQuery.simpleUpdateByQuery();

8.参考文档

https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-update-by-query.html

本文对应的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/main/resources/esmapper/byquery.xml