api es7 删除所有数据_【Elasticsearch7.0】文档接口之查询delete接口
功能介绍
删除除了之前讲的之外,还有可以根据条件来进行删除。_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接口相关推荐
- api es7 删除所有数据_【译】ECMAScript 2016 (ES7) 新特性一览
本文回答了关于下一版 JavaScript(ECMAScript 2016)的以下几个问题: 谁在设计? 如何设计? 会有什么特性? 本文会持续更新以及时反馈最新进展. 1.谁在设计 ECMAScri ...
- api es7 删除所有数据_男子让月薪6万的人技术入股,结果工作3月蒙了:删除所有数据入职其他公司...
阅读本文前,请您先点击上面的"蓝色字体",再点击"关注",这样您就可以继续免费收到文章了.每天都会有分享,都是免费订阅,请您放心关注.注:本文转载自网络,不代表 ...
- api es7 删除所有数据_Elasticsearch7.1中文文档-第四章-API约定
Elasticsearch REST APIs是用HTTP暴露的,并且是基于JSON的. 除非另有说明,否则本章中的约定都可以使用REST API来使用.多索引 索引名称中支持日期数学 公用选项 基于 ...
- unity 删除子节点_【Unity文档】Realtime GI介绍(一)
* 介绍 Unity中,有两种GI的技术:烘焙(Baked)和预计算实时(Precomputed Realtime)全局光照,这篇是讲预计算实时部分的 目录 如何决定光图分辨率 光图中的Charts是 ...
- Beautiful Soup 4.4.0 文档
Beautiful Soup 4.4.0 文档 文章目录 Beautiful Soup 4.4.0 文档 @[toc] 快速开始 安装 Beautiful Soup 安装完成后的问题 安装解析器 如何 ...
- Beautiful Soup 4.4.0 文档 — beautifulsoup 4.4.0q 文档
Beautiful Soup 4.4.0 文档¶ Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的 ...
- Elasticsearch7.3文档管理
知识点 读完本文将学会以下技能 新建文档 获取文档 更新文档 删除文档 前置条件 已有es7.3环境 本文基于es7.3,有些api在低版本的es中可能不适用 已有kibana环境 本文使用liban ...
- Microsoft SignalR Map Controller具有页面可见性API和事件模糊功能,可映射文档管理系统(DMS)中的用户交互
介绍 信息技术已成为企业中的战略因素,在业务流程中提供了强大的支持[6].当前,来自多个部门的技术人员的使用直接影响了所获得的组织成果[3].管理文档的能力已成为管理业务知识必不可少的工具[9].在这 ...
- C语言学生管理系统(将数据保存至TXT文档)附源码
C语言学生管理系统(将数据保存至TXT文档) 在大一学习完C语言之后,回家遇到疫情,便有了用C语言写一个学生管理系统的想法,在家花费了一些时间,刚开始写了一点,后来可能是因为学艺不精就没写完,开学到现 ...
最新文章
- 压缩和归档及vi的使用
- python前段管理3
- linux下c 多线程如何映射文件夹,c - 在Linux中使用多个线程进行信号处理
- DPM(Deformable Parts Model)--原理(一)
- 〖Linux〗svn log 每个日志记录只显示一行的方法
- info命令Linux,Linux zipinfo命令
- 快手直播伴侣因计算机丢失,在电脑上安装快手直播伴侣,却说因为计算机丢失MSVCP140.DOLL怎么办???...
- 【web前端面试题整理03】来看一点CSS相关的吧
- SDN:势不可挡的网络演进大潮
- 缩写月份单词python_一月到十二月份的英语单词和缩写形式
- DCSTFN(使用深度卷积网络融合高时空遥感图像)
- 乐队设备--反馈抑制器学习笔记
- 《汇编语言》学习(十三)int指令
- Canvas线条动画
- SQLServer把日期/时间数据转换为指定格式之CONVERT()函数
- python外文文献翻译_英文学术文献翻译软件有哪些推荐?
- 网络学习 2g 3g 4g 技术对比 带宽理解 三大运营商手机网络模式 (制式)
- 微信小程序“插件未授权使用”问题解决
- .NetCore微信支付+服务商模式(saas)
- Linux中su命令与sudo命令
热门文章
- android程序中关于webview加载html文件
- xml文件中若没有子节点,则删除文件
- 阿里rocketmq与自建rocketmq
- openjudge7624:山区建小学
- Code-First Development with Entity Framework 4
- 学习就是一件要耐的住寂寞放的下欲望舍的得享乐的事
- k8s集群部署项目_JAVA项目(制作镜像)---K8S_Google工作笔记0060
- Web前端工作笔记010---IE8兼容_IE8不能使用foreach_indexOf的解决方案
- Python工作笔记004---python字符串前面加上'r'的作用_u_b的含义
- word2007文档无法编辑怎么办