博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Elasticsearch增删改查 之 —— Delete删除
阅读量:6607 次
发布时间:2019-06-24

本文共 2045 字,大约阅读时间需要 6 分钟。

删除文档也算是常用的操作了...如果把Elasticsearch当做一款普通的数据库,那么删除操作自然就很常用了。如果仅仅是全文检索,可能就不会太常用到删除。

Delete API

删除API,可以根据特定的ID删除文档。

$ curl -XDELETE 'http://localhost:9200/twitter/tweet/1'

会返回下面的消息:

{    "_shards" : {        "total" : 10,        "failed" : 0,        "successful" : 10    },    "found" : true,    "_index" : "twitter",    "_type" : "tweet",    "_id" : "1",    "_version" : 2}

版本

每个索引都通过版本来维护。当想要删除某个文档的时候,版本可以用来确认删除的文档。而想要删除一个已经被删除的文档,则不会发生任何变化。

路由

如果在索引的时候提供了路由,那么删除的时候,也需要指定相应的路由:

$ curl -XDELETE 'http://localhost:9200/twitter/tweet/1?routing=kimchy'

上面的例子中,想要删除id为1的索引,会通过固定的路由查找文档。如果路由不正确,可能查不到相关的文档。对于某种情况,需要使用_routing参数,但是却没有任何的值,那么删除请求会广播到每个分片,执行删除操作。

Parent

删除操作也可以指定父文档。再删除父文档的时候,不会删除子文档。有一种删除子文档的方法,就是使用delete-by-query。

自动创建索引

在执行删除操作时,如果没有创建过索引,则会自动创建。类型也是一样。

分布式

对于分布式的环境,主分片和副分片会维护一个共同的组ID,执行删除操作会向这个组ID发送请求。

Write Consistency

Control if the operation will be allowed to execute based on the number of active shards within that partition (replication group). The values allowed are one, quorum, and all. The parameter to set it isconsistency, and it defaults to the node level setting of action.write_consistency which in turn defaults toquorum.

For example, in a N shards with 2 replicas index, there will have to be at least 2 active shards within the relevant partition (quorum) for the operation to succeed. In a N shards with 1 replica scenario, there will need to be a single shard active (in this case, one and quorum is the same).

refresh

refresh参数设置为true,可以在删除操作执行后,立即刷新分片,保证其数据可以立即被查询。不过要慎用!

timeout

The primary shard assigned to perform the delete operation might not be available when the delete operation is executed. Some reasons for this might be that the primary shard is currently recovering from a store or undergoing relocation. By default, the delete operation will wait on the primary shard to become available for up to 1 minute before failing and responding with an error.

当分片不可用的时候,删除操作会等待一段时间执行。可以设置其timeout

$ curl -XDELETE 'http://localhost:9200/twitter/tweet/1?timeout=5m'
本文转自博客园xingoo的博客,原文链接:,如需转载请自行联系原博主。
你可能感兴趣的文章
SAP S/4 HANA新变化-信用管理
查看>>
清华梦的粉碎读后感--论理想主义者王垠
查看>>
模块机制
查看>>
Bootstrap <基础八>图片
查看>>
【hihocoder1255 Mysterious Antiques in Sackler Museum】构造 枚举
查看>>
《Programming WPF》翻译 第8章 2.Timeline
查看>>
doc-remote-debugging.html
查看>>
[20161023]为什么以前可以这样的表.txt
查看>>
[20161111]数据库文件头的修复.txt
查看>>
功能奇数次执行和偶数次执行时的结果不同的故障复盘
查看>>
DBMS_STATS.GATHER_TABLE_STATS
查看>>
Java-单机版的书店管理系统(练习设计模块和思想_系列 五 )
查看>>
Reddit 讨论:Hinton的Capsule网络真的比CNN效果更好吗?
查看>>
微信支付现金红包接口
查看>>
嵌入式 详解udev
查看>>
《C程序员:从校园到职场》出版预告(2):从“百花齐放”到“一枝独秀”
查看>>
Network Monitor 查询命令和MySQL命令
查看>>
好“戏”刚刚开幕 云计算逐步被认可
查看>>
3G关闭倒计时引发全网通换机潮?
查看>>
《深入理解LLVM》第一章 LLVM简介
查看>>