【发布时间】:2017-06-03 07:52:56
【问题描述】:
是否可以删除 elasticsearch 索引中特定类型的所有文档? - 它是否也影响类型映射? - 我想保留该类型的映射。
使用弹性搜索 2.2
【问题讨论】:
标签: elasticsearch
是否可以删除 elasticsearch 索引中特定类型的所有文档? - 它是否也影响类型映射? - 我想保留该类型的映射。
使用弹性搜索 2.2
【问题讨论】:
标签: elasticsearch
找到与此here 相关的答案。以下内容直接来自该答案。
您可以为此使用 delete-by-query 插件43。这是一个例子:
我们创建一个有两种类型的索引并添加一些文档:
POST /_bulk
{"index":{"_index":"mammals","_type":"people"}}
{"tag_line":"I am Mike"}
{"index":{"_index":"mammals","_type":"people"}}
{"tag_line":"I am Hanna"}
{"index":{"_index":"mammals","_type":"people"}}
{"tag_line":"I am Bert"}
{"index":{"_index":"mammals","_type":"animals"}}
{"tag_line":"I am a dog"}
{"index":{"_index":"mammals","_type":"animals"}}
{"tag_line":"I am a cat"}
当我们查询所有文档时,我们得到 5 个结果:
GET /mammals/_search?size=0
{
"query": {
"match_all": {}
}
}
现在我们可以删除所有“动物”类型的文档:
DELETE /mammals/animals/_query
{
"query": {
"match_all": {}
}
}
这仅在安装了delete-by-query 插件时才有效。
当我们再次搜索所有文档时,我们只得到 3 个结果,因为动物已经消失了。
P.S: 这个插件在 2.x 版本中有,在 5.x 中没有。所以在 5.x 中可以有其他方法来做到这一点。我相信这种删除不会影响映射,因为这只会删除单个文档。
【讨论】: