3、Delete API

delete API 可以让你删除一个特定id的文档,下面例子删除twitter索引中_doc类型、id为1的文档:

DELETE /twitter/_doc/1

返回结果:

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

3.1 乐观锁( Optimistic Concurrency Control)

删除操作可以是有条件的,只有在为文档的最后一次修改分配了if_seq_noif_primary_term才能执行索引操作。如果检测到不匹配,则操作将导致VersionConflictException和状态代码409.有关详细信息,请参阅乐观并发控制。

3.2 版本(Versioning)

index文档后都有一个版本号,删除文档时,可以指定version参数确保相关的文档(版本号一致)被正确删除,并且文档的版本号在删除操作执行期间不能被更改。任何一个写操作(包括删除操作)都会导致版本号递增。

被删除文档的版本号在短时间内仍可使用,以便控制并发操作。已删除文档的版本号保持的可用的时间由index.gc_deletes索引设置确定,默认为60秒。

3.3 路由(Routing)

如果索引的时候指定了routing参数,那么删除的时候也要指定对应的routing参数,否则删除不了相应的文档。

DELETE /twitter/_doc/1?routing=kimchy

上例将根据kimchy进行路由删除id为1的文档。请注意,在没有正确路由的情况下将导致文档无法正确删除。

当在映射中设置_routing但没有指定routing参数时,delete api会抛RoutingMissingException异常并且拒绝本次请求。

3.4 自动创建索引(Automatic index creation)

如果使用了外部版本控制,则删除操作会自动创建一个之前尚未创建过的索引(请参阅创建索引API以手动创建索引)
如果以前未创建过特定类型,还会自动为特定类型创建动态类型映射(请查看put mapping API以手动创建类型映射)。

3.5 分布式(Distributed)

delete请求会通过hash路由到某个分片上,然后被重定向到该id组中的主分片上,并复制(如果需要)到该id组中的副本分片上。之后在所有相关分片上执行删除操作。

3.6 等待活跃分片(Wait For Active Shards)

当执行删除操作是,可以设置 wait_for_active_shards参数要求活跃分片数达到某个值的时候才能执行删除操作。查阅这里了解使用例子。

3.7 刷新(Refresh)

设置此请求所做的更改到搜索可见的时间。查阅refresh

3.8 超时(Timeout)

执行删除操作时,执行删除操作的主分片可能不可用。这可能是因为主分片正在恢复中或者主分片正在进行迁移。默认情况下,删除操作会等待一分钟,如果主分片还是不可用就会报错。你可以在delete API 中通过timeout参数显式指定超时时间。下面例子把timeout设置为5分钟:

DELETE /twitter/_doc/1?timeout=5m

elasticsearch6.7 05. Document APIs(4)Delete API的更多相关文章

  1. elasticsearch6.7 05. Document APIs(3)GET API

    2.GET API get API 可以通过文档id从索引中获取json格式的文档,以下示例从twitter索引中获取type为_doc,id值为0为的JSON文档: GET twitter/_doc ...

  2. elasticsearch6.7 05. Document APIs(2)Index API

    Single document APIs Index API Get API Delete API Update API Multi-document APIs Multi Get API Bulk ...

  3. elasticsearch6.7 05. Document APIs(6)UPDATE API

    5. UPDATE API 更新操作可以使用脚本来更新.更新的时候会先从索引中获取文档数据(在每个分片中的集合),然后运行脚本(使用可选的脚本语言和参数),再果进行索引(还允许删除或忽略该操作).它使 ...

  4. elasticsearch6.7 05. Document APIs(5)Delete By Query API

    4.Delete By Query API _delete_by_query API可以删除某个匹配条件的文档: POST twitter/_delete_by_query { "query ...

  5. elasticsearch6.7 05. Document APIs(9)Bulk API

    8.Bulk API 可以把多个index或delete操作放在单个bulk API中执行.这样可以极大地提高索引速度. /_bulkAPI使用如下的JSON结构: action_and_meta_d ...

  6. elasticsearch6.7 05. Document APIs(10)Reindex API

    9.REINDEX API Reindex要求为源索引中的所有文档启用_source. reindex 不会配置目标索引,不会复制源索引的设置.你需要在reindex之前先指定mapping,分片数量 ...

  7. elasticsearch6.7 05. Document APIs(8)Multi Get API

    7.Multi Get API(Multi Get API) multi GET API 允许你一次性获取多个文档,你需要指定docs数组,其中包含了所有你需要查询的文档,每个查询结构至少包含索引,类 ...

  8. elasticsearch6.7 05. Document APIs(1)data replication model

    data replication model 本节首先简要介绍Elasticsearch的data replication model,然后详细描述以下CRUD api: 1.读写文档(Reading ...

  9. elasticsearch6.7 05. Document APIs(7)Update By Query API

    6.Update By Query API _update_by_query 接口可以在不改变 source 的情况下对 index 中的每个文档进行更新.这对于获取新属性或其他联机映射更改很有用.以 ...

随机推荐

  1. jsp和html的区别

    html是超文本标记语言,只要有浏览器,就可以显示出来了. jsp是java server page就是在java服务器端的页面,需要通过jdk的编译才可以显示在客户端的浏览器上. 不仅如此,jsp还 ...

  2. 可在广域网部署运行的即时通讯系统 -- GGTalk总览(附源码下载)

      (最新版本:V6.2,2019.01.03 .Xamarin移动端版本已经推出,包括 Android 和 iOS) GGTalk开源即时通讯系统(简称GG)是QQ的高仿版,同时支持局域网和广域网, ...

  3. 利用ArcGIS-Server瓦片制作离线地图包(*.tpk)_详细流程

    1.写在前面 本人是综合了好几个资料才最终制作成功,在这个过程中发现网上好多博客写的步骤不是很详细,因此就把自己的详细制作步骤全部分享出来,可以供需要的小伙伴参考. (1)本文档不讨论tpk文件的详细 ...

  4. [转]kaldi中的在线识别----Online Recognizers

    转自: http://blog.csdn.net/wbgxx333/article/details/24932533 本文是kaldi学习联盟中@冒顿翻译的,下面是@冒顿的翻译结果,在这里感谢@冒顿的 ...

  5. virtual box 下安装centos 7

    1: 在virtual box下导入 镜像的时候报错: Failed to open/create the internal network 'HostInterfaceNetworking-Virt ...

  6. 我来谈谈PHP和JAVA在web开发上的的区别

    这里的标题写的是谈谈PHP和JAVA的区别,其实是委婉的说法,其实别人是想听PHP好还是JAVA好!!! 从而从中找到存在感!!! 因为由于我是从多年的php开发转到java开发的.所以最,不时的有好 ...

  7. List和ArrayList的区别

    List是一个接口,而ListArray是一个类. ListArray继承并实现了List. 所以List不能被构造,但可以向上面那样为List创建一个引用,而ListArray就可以被构造. Lis ...

  8. 在向一个ArrayList中添加大量元素前,可以使用ensureCapacity方法来增加ArrayList的容量

    参考http://www.jianshu.com/p/f174d49b391c ensureCapacity(),该方法就是 ArrayList 的扩容方法.在前面就提过 ArrayList 每次新增 ...

  9. 4 spring 创建对象的三种方式

    方式1. 通过构造方法创建     1.1 无参构造创建:默认情况.     1.2 有参构造创建:需要明确配置         1.2.1 需要在类中提供有参构造方法         1.2.2 在 ...

  10. postgresql 表继承

    可以按如下语句创建表 CREATE TABLE capitals ( name text, population real, altitude int, -- (in ft) state ) ); C ...