Elasticsearch中删除数据
删除文档
想找个删除的api,找不到能用的,只能自己去翻译了。。。。。。
英文原文出自:https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-delete.html
delete API
允许从基于其id的特定索引中删除一个JSON文档,下面的示例从twitter中删除类型为_doc的JSON文档,其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"
}
Versioning
索引的每个文档都是版本化的。在删除文档时,可以指定版本,以确保正在删除的相关文档实际上正在被删除,同时它也没有改变。每个在文档上执行的写操作,包括删除,都会使其版本增加。删除文档的版本号可以在删除后短时间内可用,以控制并发操作。删除文档的版本仍然可用的时间长度由索引决定。gc_deletes索引设置和默认设置为60秒。
Routing
当索引使用控制路由的能力时,为了删除文档,也应该提供路由值。例如:
DELETE /twitter/_doc/1?routing=kimchy
上面的消息将会删除一条id为1的tweet,但是会基于用户发送。注意,在没有正确路由的情况下发出删除,将导致文档不被删除。
当将_routing映射设置为required且没有指定路由值时,delete api将抛出一个RoutingMissingException并拒绝该请求。
Automatic index creation
如果使用外部版本变体,删除操作会自动创建索引,如果没有之前创建(create index API手动创建一个索引),并自动创建一个动态类型映射为特定类型,如果没有之前创建(查看手动映射API创建类型映射)。
Distributed
删除操作被散列到一个特定的shard id中,然后被重定向到该id组内的主分片,并在该id组中复制(如果需要)到shard副本。
Wait For Active Shards
在删除请求时,您可以设置wait_for_active_shards参数,在开始处理删除请求之前,需要使用最少的shard副本。有关详细信息和使用示例,请参阅此处。
Refresh
在搜索时,可以看到该请求所做的更改。看到了什么?刷新。
Timeout
在执行删除操作时,指定执行删除操作的主碎片可能无法使用。一些原因可能是,主要碎片目前正在从商店中恢复,或者正在进行重新安置。默认情况下,delete操作在失败和响应一个错误前将在主分片上等待1分钟。timeout参数可用于显式指定等待的时间。这里有一个设置为5分钟的例子:
DELETE /twitter/_doc/1?timeout=5m
eg:自己的例子:
在policy_document中删除类型为policy_document的,id=e_87431dc564341cf2cc1af8d2877476df的文档
DELETE policy_document/policy_document/e_87431dc564341cf2cc1af8d2877476df
返回结果:
{
"took": 0,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 0,
"max_score": null,
"hits": []
}
}
上一篇: Elasticsearch定时删除数据
下一篇: 如何修改mysql中列的默认值
推荐阅读