功能介绍

删除除了之前讲的之外,还有可以根据条件来进行删除。_delete_by_query接口是对查询到的结果进行删除操作,如示例:

curl -XPOST "http://127.0.0.1:9200/test/_delete_by_query?pretty" -H "Content-Type: application/json" -d'

{

"query": {

"match": {

"user": "qqq"

}

}

}'

返回值为:

{

"took" : 15,

"timed_out" : false,

"total" : 1,

"deleted" : 1,

"batches" : 1,

"version_conflicts" : 0,

"noops" : 0,

"retries" : {

"bulk" : 0,

"search" : 0

},

"throttled_millis" : 0,

"requests_per_second" : -1.0,

"throttled_until_millis" : 0,

"failures" : [ ]

}

_delete_by_query获取索引启动时的快照,并使用内部版本控制删除它发现的内容,如果在获取快照和删除文档的时候版本发生了改变,那么删除的时候会失败,只有文档的版本号匹配才能删除。注意因为版本号不支持0,所以如果删除的时候版本号传过来的是0,那么删除将失败。

在使用_delete_by_query接口的时候,会依次使用查询接口,来找到相匹配的数据进行删除,每次都会查询出一批数据,使用批量请求进行删除,如果查询或者批量删除被拒绝,_delete_by_query接口有一个默认的重试策略(最多重试10次),如果超过最大重试次数,那么_delete_by_query接口将失败,并会返回错误信息,之前执行的删除操作不会回滚,依然有效,所有的失败结果都会返回,所以会出现多个失败结果的数据。

如果出现版本号冲突时,你不希望中止,那么可以使用conflicts=proceed或者在请求体中设置"conflicts": "proceed"

curl -XPOST "http://127.0.0.1:9200/test/_delete_by_query?pretty&conflicts=proceed" -H "Content-Type: application/json" -d'

{

"query": {

"match": {

"user": "qqq"

}

}

}'

也可以删除多个索引,跟搜索多少索引是一样的。

curl -XPOST "http://127.0.0.1:9200/test,test01/_delete_by_query?pretty" -H "Content-Type: application/json" -d'

{

"query": {

"match": {

"user": "qqq"

}

}

}'

如果你使用了路由,那么删除的时候也需要设置路由

curl -XPOST "http://127.0.0.1:9200/test/_delete_by_query?pretty&routing=1" -H "Content-Type: application/json" -d'

{

"query": {

"match": {

"user": "qqq"

}

}

}'

默认情况下,_delete_by_query的滚动大小是1000,当然也可以手动设置该值,在地址后面加scroll_size属性。

curl -XPOST "http://127.0.0.1:9200/test/_delete_by_query?pretty&scroll_size=5000" -H "Content-Type: application/json" -d'

{

"query": {

"match": {

"user": "qqq"

}

}

}'

请求参数

删除接口除了支持pretty参数外,还支持以下参数:refresh, wait_for_completion, wait_for_active_shards, timeout, and scroll。

refresh参数:处理完删除请求之后,如果设置了refresh参数,那么会刷新相关删除相关分片的数据。与delete API不同,delete API只刷新接收删除操作的分片,而且不支持wait_for。

如果请求中包含wait_for_completion=false,则Elasticsearch将在启动请求之前进行检查,然后返回一个任务,该任务可与Tasks api一起用于取消或获取任务状态,Elasticsearch还将在.tasks/task/${taskId}处创建此任务的记录,作为文档,可以随时对该任务进行处理,如果任务完成了,那么一定要把它删除,这样es才能回收空间。

wait_for_active_shards表示在执行请求的时候必须要有多少个活跃的分片。

timeout表示多少时间没有响应就认为请求已经失败。_delete_by_query使用滚动搜索,可以指定scroll参数来设置活跃的时间,默认是5分钟。

requests_per_second可以设置为任意正数,在每个删除操作中设置一个超时时间来控制速率,设置成-1表示禁用。批次大小为1000,requests_per_second为500,

target_time = 1000 / 500 per second = 2 seconds

wait_time = target_time - write_time = 2 seconds - 0.5 seconds = 1.5 seconds

响应体

{

"took" : 147,

"timed_out": false,

"total": 119,

"deleted": 119,

"batches": 1,

"version_conflicts": 0,

"noops": 0,

"retries": {

"bulk": 0,

"search": 0

},

"throttled_millis": 0,

"requests_per_second": -1.0,

"throttled_until_millis": 0,

"failures" : [ ]

}

took

从整个操作开始到结束的毫秒数。

timed_out

如果在查询delete执行期间执行的任何请求超时,则将此标志设置为true。

total

成功处理的文档数量。

deleted

成功删除的文档数量。

batches

滚动获取数据的数量。

version_conflicts

按查询删除所命中的版本冲突数。

noops

总是返回0,只是为了和查询update,查询delete和reindex返回相同的结构体。

retries

按查询删除所尝试的重试次数。bulk是重试的批量操作的数量,search是重试的搜索操作的数量。

throttled_millis

请求休眠以符合requests_per_second的毫秒数。

requests_per_second

在查询delete期间每秒有效执行的请求数。

throttled_until_millis

在_delete_by_query响应中,该字段应该始终等于零。它只有在使用task API时才有意义,在task API中,它指示下一次再次执行节流请求,以符合requests_per_second。

failures

错误返回结果。

使用task api

可以使用task api来做删除操作,如:

curl -XGET "http://127.0.0.1:9200/_tasks?detailed=true&actions=*/delete/byquery"

没有返回内容,但是使用以下请求,会返回task:

curl -XPOST "http://127.0.0.1:9200/test/_delete_by_query?pretty&wait_for_completion=false" -H "Content-Type: application/json" -d'

{

"query": {

"match": {

"user": "qqq"

}

}

}'

返回值

{

"task" : "8uQK-B00RiWq03awtJok1Q:4028"

}

可以直接根据task来查询

curl -XGET "http://127.0.0.1:9200/_tasks/8uQK-B00RiWq03awtJok1Q:4028?pretty"

返回值为:

{

"completed" : true,

"task" : {

"node" : "8uQK-B00RiWq03awtJok1Q",

"id" : 4028,

"type" : "transport",

"action" : "indices:data/write/delete/byquery",

"status" : {

"total" : 0,

"updated" : 0,

"created" : 0,

"deleted" : 0,

"batches" : 0,

"version_conflicts" : 0,

"noops" : 0,

"retries" : {

"bulk" : 0,

"search" : 0

},

"throttled_millis" : 0,

"requests_per_second" : -1.0,

"throttled_until_millis" : 0

},

"description" : "delete-by-query [test]",

"start_time_in_millis" : 1565187824000,

"running_time_in_nanos" : 7293485,

"cancellable" : true,

"headers" : { }

},

"response" : {

"took" : 3,

"timed_out" : false,

"total" : 0,

"updated" : 0,

"created" : 0,

"deleted" : 0,

"batches" : 0,

"version_conflicts" : 0,

"noops" : 0,

"retries" : {

"bulk" : 0,

"search" : 0

},

"throttled" : "0s",

"throttled_millis" : 0,

"requests_per_second" : -1.0,

"throttled_until" : "0s",

"throttled_until_millis" : 0,

"failures" : [ ]

}

}

也可以取消task

curl -XPOST "http://127.0.0.1:9200/_tasks/8uQK-B00RiWq03awtJok1Q:4028/_cancel?pretty"

切分

查询delete支持滚动切分,通过并行可以提升处理性能。

手动切分

curl -XPOST "http://127.0.0.1:9200/test/_delete_by_query?pretty" -H "Content-Type: application/json" -d'

{

"slice": {

"id": 0,

"max": 2

},

"query": {

"range": {

"likes": {

"lt": 10

}

}

}

}'

curl -XPOST "http://127.0.0.1:9200/test/_delete_by_query?pretty" -H "Content-Type: application/json" -d'

{

"slice": {

"id": 1,

"max": 2

},

"query": {

"range": {

"likes": {

"lt": 10

}

}

}

}'

自动切分

使用slices参数来设置需要多少slices。

curl -XPOST "http://127.0.0.1:9200/test/_delete_by_query?refresh&slices=5&pretty" -H "Content-Type: application/json" -d'

{

"query": {

"range": {

"likes": {

"lt": 10

}

}

}

}'

部分返回值

也可以关注我的公众号:程序之声

关注公众号,领取更多资源。

本文为博主原创文章,未经博主允许不得转载。

api es7 删除所有数据_【Elasticsearch7.0】文档接口之查询delete接口相关推荐

  1. api es7 删除所有数据_【译】ECMAScript 2016 (ES7) 新特性一览

    本文回答了关于下一版 JavaScript(ECMAScript 2016)的以下几个问题: 谁在设计? 如何设计? 会有什么特性? 本文会持续更新以及时反馈最新进展. 1.谁在设计 ECMAScri ...

  2. api es7 删除所有数据_男子让月薪6万的人技术入股,结果工作3月蒙了:删除所有数据入职其他公司...

    阅读本文前,请您先点击上面的"蓝色字体",再点击"关注",这样您就可以继续免费收到文章了.每天都会有分享,都是免费订阅,请您放心关注.注:本文转载自网络,不代表 ...

  3. api es7 删除所有数据_Elasticsearch7.1中文文档-第四章-API约定

    Elasticsearch REST APIs是用HTTP暴露的,并且是基于JSON的. 除非另有说明,否则本章中的约定都可以使用REST API来使用.多索引 索引名称中支持日期数学 公用选项 基于 ...

  4. unity 删除子节点_【Unity文档】Realtime GI介绍(一)

    * 介绍 Unity中,有两种GI的技术:烘焙(Baked)和预计算实时(Precomputed Realtime)全局光照,这篇是讲预计算实时部分的 目录 如何决定光图分辨率 光图中的Charts是 ...

  5. Beautiful Soup 4.4.0 文档

    Beautiful Soup 4.4.0 文档 文章目录 Beautiful Soup 4.4.0 文档 @[toc] 快速开始 安装 Beautiful Soup 安装完成后的问题 安装解析器 如何 ...

  6. Beautiful Soup 4.4.0 文档 — beautifulsoup 4.4.0q 文档

    Beautiful Soup 4.4.0 文档¶ Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的 ...

  7. Elasticsearch7.3文档管理

    知识点 读完本文将学会以下技能 新建文档 获取文档 更新文档 删除文档 前置条件 已有es7.3环境 本文基于es7.3,有些api在低版本的es中可能不适用 已有kibana环境 本文使用liban ...

  8. Microsoft SignalR Map Controller具有页面可见性API和事件模糊功能,可映射文档管理系统(DMS)中的用户交互

    介绍 信息技术已成为企业中的战略因素,在业务流程中提供了强大的支持[6].当前,来自多个部门的技术人员的使用直接影响了所获得的组织成果[3].管理文档的能力已成为管理业务知识必不可少的工具[9].在这 ...

  9. C语言学生管理系统(将数据保存至TXT文档)附源码

    C语言学生管理系统(将数据保存至TXT文档) 在大一学习完C语言之后,回家遇到疫情,便有了用C语言写一个学生管理系统的想法,在家花费了一些时间,刚开始写了一点,后来可能是因为学艺不精就没写完,开学到现 ...

最新文章

  1. 压缩和归档及vi的使用
  2. python前段管理3
  3. linux下c 多线程如何映射文件夹,c - 在Linux中使用多个线程进行信号处理
  4. DPM(Deformable Parts Model)--原理(一)
  5. 〖Linux〗svn log 每个日志记录只显示一行的方法
  6. info命令Linux,Linux zipinfo命令
  7. 快手直播伴侣因计算机丢失,在电脑上安装快手直播伴侣,却说因为计算机丢失MSVCP140.DOLL怎么办???...
  8. 【web前端面试题整理03】来看一点CSS相关的吧
  9. SDN:势不可挡的网络演进大潮
  10. 缩写月份单词python_一月到十二月份的英语单词和缩写形式
  11. DCSTFN(使用深度卷积网络融合高时空遥感图像)
  12. 乐队设备--反馈抑制器学习笔记
  13. 《汇编语言》学习(十三)int指令
  14. Canvas线条动画
  15. SQLServer把日期/时间数据转换为指定格式之CONVERT()函数
  16. python外文文献翻译_英文学术文献翻译软件有哪些推荐?
  17. 网络学习 2g 3g 4g 技术对比 带宽理解 三大运营商手机网络模式 (制式)
  18. 微信小程序“插件未授权使用”问题解决
  19. .NetCore微信支付+服务商模式(saas)
  20. Linux中su命令与sudo命令

热门文章

  1. android程序中关于webview加载html文件
  2. xml文件中若没有子节点,则删除文件
  3. 阿里rocketmq与自建rocketmq
  4. openjudge7624:山区建小学
  5. Code-First Development with Entity Framework 4
  6. 学习就是一件要耐的住寂寞放的下欲望舍的得享乐的事
  7. k8s集群部署项目_JAVA项目(制作镜像)---K8S_Google工作笔记0060
  8. Web前端工作笔记010---IE8兼容_IE8不能使用foreach_indexOf的解决方案
  9. Python工作笔记004---python字符串前面加上'r'的作用_u_b的含义
  10. word2007文档无法编辑怎么办