您现在的位置是:首页 > 文章详情

elasticsearch使用指南之Elasticsearch Document Delete API详解、原理与示例

日期:2019-03-13点击:482

作者简介:《RocketMQ技术内幕》作者,中间件兴趣圈公众号 维护者。


本节将重点介绍ElasticSearch Doucment Delete API(根据ID删除文档)。

《ElasticSearch Client详解》可知,ElasticSearch Delete Rest Hign level Delete Api声明如下:

  • public final DeleteResponse delete(DeleteRequest deleteRequest, RequestOptions options) throws IOException
  • public final void deleteAsync(DeleteRequest deleteRequest, RequestOptions options, ActionListener listener)

上述两个API,一个同步调用,一个异步调用,同步调用方法直接组装DeleteResponse 并返回,而异步方法通过回调ActionListener,并将执行结果(DeleteResponse)传入回调方法。DeleteRequest 需要的请求参数在IndexRequest、GetRequest中都已提及,本节 就无需再对其进行分析。

1、Delete API示例

public static void testDelete() { RestHighLevelClient client = EsClient.getClient(); try { DeleteRequest request = new DeleteRequest("twitter", "_doc", "1"); DeleteResponse result = client.delete(request, RequestOptions.DEFAULT); System.out.println(result); } catch(Throwable e) { e.printStackTrace(); } finally { EsClient.close(client); } }

返回示例:

{ "_shards" : { "total" : 2, "failed" : 0, "successful" : 1 }, "_index" : "twitter", "_type" : "_doc", "_id" : "1", "_version" : 2, "_primary_term": 1, "_seq_no": 5, "result": "deleted" }

2、深入Delete API内部实现机制

2.1 版本管理

索引的每个文档都是版本化的。在一个文档上执行的每一个写操作,包括删除,都会导致它的版本增加。被删除的文档的版本号在删除后的短时间内仍然可用,以允许对并发操作进行控制(基于版本的乐观锁控制)。被删除的文档版本保留的时间由配置项index.gc_deletes决定,默认时间为60s。

2.2 自动创建索引

执行一个文档的删除操作,如果索引不存在,默认情况下也会自动创建索引。其他诸如分布式、Wait For Active Shards、刷新机制、超时机制都在《Elasticsearch Document Index API详解、原理与示例》中已详细描述,再次不重复。

原文链接:https://yq.aliyun.com/articles/693700
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章