在上一小节中,我们学习了文档的定义和新增语法。当然,有新增操作,相反的就会有删除操作。es中的文档的删除操作分为两类: 主键删除 和查询删除。
示例: 下面操作的含义 删除id为1的文档记录。
DELETE example/docs/1返回结果
{ "_index": "example", "_type": "docs", "_id": "1", "_version": 2, "result": "deleted", "_shards": { "total": 2, "successful": 2, "failed": 0 }, "_seq_no": 1, "_primary_term": 1 } result 得知删除成功_delete_by_query语法: 即对查询匹配到的每一个文档执行删除操作。
示例如下
#建立索引和映射 PUT example PUT example/docs/_mapping { "properties": { "id":{ "type": "long" }, "name":{ "type": "text" }, "birthday": { "type": "date" } } } #添加几个测试数据,以供后面查询删除操作 PUT example/docs/1 { "id":1, "name":"张三", "birthday": "2019-10-10" } PUT example/docs/2 { "id":2, "name":"张四", "birthday": "2017-08-08" } PUT example/docs/3 { "id":3, "name":"李思思", "birthday": "2017-08-08" } GET example/docs/_search { "query": { "match_all": {} } }示例如下
#删除名字中包含张的文档 POST example/docs/_delete_by_query { "query":{ "match":{ "name": "张" } } }返回结果
{ "took": 24, "timed_out": false, "total": 2, "deleted": 2, "batches": 1, "version_conflicts": 0, "noops": 0, "retries": { "bulk": 0, "search": 0 }, "throttled_millis": 0, "requests_per_second": -1, "throttled_until_millis": 0, "failures": [] }小贴士
_delete_by_query在启动索引时获取索引的快照,并删除使用internal版本控制发现的索引。这意味着,如果在采集到快照版本和处理删除请求之间更改文档,则会遇到版本冲突。当版本匹配时,将删除文档。
scroll_size默认情况下的scroll_size的大小是1000。不过可以通过该参数进行调整。示例如下。
POST example/docs/_delete_by_query?scroll_size=999999删除所有文档是上一小节查询删除的一种特殊的变体。当查询的条件是匹配所有记录,则执行的删除当前索引下的所有记录数据。该操作会根据数据量的多少,有一定的时间延迟。
示例如下
POST example/docs/_delete_by_query { "query": { "match_all": {} } } 瘦子没有夏天 认证博客专家 博客专家 Java深度用户 大家好,我是Leon。一个专业与Java领域的程序员,偶尔理理财。欢迎大家来阅读我博客,如果你发现极个别文章和书籍内容雷同,请叫我勤奋的code搬运工٩(๑❛ᴗ❛๑)۶。我的邮箱:gyoomi0709@foxmail.com