Elasticsearch Delete/UpdateByQuery案例
Elasticsearch Delete/UpdateByQuery案例分享
本文涉及技术点:
- DeleteByQuery/UpdateByQuery
- Count文档统计Api
1.准备工作
参考文档《》导入和配置es客户端
2.编写创建索引表和初始化数据方法
创建索引表和初始化数据的组件实现本文不做重点介绍,请访问视频教程了解:
3.定义DeleteByQuery/UpdateByQuery对应的Dsl脚本
<!--
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]]
}
},
"range": {
"agentStarttime": {
"lt": #[endTime] ##统计截止时间
}
}
}
]
}
}
}
]]>
</property>
</properties>
4.实现DeleteByQuery功能
定义实现DeleteByQuery功能的方法
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:
7.执行updatebyquery junit单元测试方法
@Test
public void testUpdateByQuery() throws ParseException {
DeleteUdateByQuery deleteUdateByQuery = new DeleteUdateByQuery();
deleteUdateByQuery.initIndiceAndData();//初始化索引表和测试数据
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/resources/esmapper/byquery.xml