Delete API - shuiyuebingdian/ElasticSearch GitHub Wiki

Delete API允许根据ID来从特定索引中删除类型化的JSON文档。以下示例从名为twitter的索引(类型为tweet)中删除ID为1的JSON文档:

DELETE /twitter/tweet/1

上面删除操作的结果是:

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

版本控制

索引的每个文档都经过版本控制。删除文档时, version可以指定,以确保我们要删除的相关文档实际上已被删除,同时它也没有更改。在文档上执行的每个写操作(包括删除操作)都会导致其版本增加。

路由

使用控制路由的索引功能时,为了删除文档,还应该提供路由值。例如:

DELETE /twitter/tweet/1?routing=kimchy

以上内容将删除ID为1的推文,但会根据用户进行路由。注意,在没有正确路由的情况下发出删除操作,将导致文档不被删除。

当_routing映射设置为required且未指定任何路由值时,删除api将抛出RoutingMissingException并拒绝该请求。

Parent 可以设置parent参数,基本上与设置路由参数相同。

请注意,删除父文档不会自动删除其子文档。删除给定父母ID的所有子文档的一种方法是使用“ 按查询删除” API来对具有自动生成(并建立索引)的字段_parent进行索引,该字段的格式为parent_type#parent_id。

删除子文档时,必须指定其父ID,否则删除请求将被拒绝,而RoutingMissingException将引发a 。

自动索引创建

如果在删除索引时,之前未创建过,则会自动创建一个索引,则还会自动为该特定类型创建动态类型映射。

分散式

删除操作将散列到特定的分片ID中。然后将其重定向到该id组内的主分片,并复制(如果需要)到该id组内的分片副本。

等待活动碎片

发出删除请求时,可以将wait_for_active_shards 参数设置为要求最小数量的分片副本处于活动状态,然后再开始处理删除请求。有关更多详细信息和用法示例,请参见 此处。

刷新

控制何时可以看到此请求所做的更改。请参阅 ?refresh。

超时

执行删除操作时,分配给执行删除操作的主分片可能不可用。造成这种情况的某些原因可能是主分片当前正在从存储中恢复或正在进行重定位。默认情况下,删除操作将等待主碎片最多可用1分钟,然后失败并响应错误。该timeout参数可用于显式指定等待时间。这是将其设置为5分钟的示例: