我正在尝试使用nodejs客户端删除特定类型的所有文档以进行弹性搜索。
我有这段代码:
var deleteType = function (type, done) {
client().indices.delete({
"index": settings.index,
"type": type,
"ignore": [404]
}, function (error, response) {
if (error) {
logger.error(error, 'Failed to delete index type');
done(error);
} else {
logger.debug({"res": response}, "deleted %s index", type);
done();
}
});
};
类型和索引参数很好。但它似乎是删除整个索引,而不仅仅是那种类型的文档。我猜我用indices.delete
进行了错误的API调用。
删除索引中特定“类型”的所有文档的正确方法是什么?
答案 0 :(得分:0)
在2.0版之前,您可以使用Delete Mapping as part of the Indices API删除索引中的类型。
允许删除映射(类型)及其数据。其余的部分 端点是
[DELETE] / {index} / {type}
[DELETE] / {index} / {type} / _ mapping
[DELETE] / {index} / _ mapping / {type}
从2.0版开始,Elasticsearch不再直接支持此功能。 documentation解释如下:
不再可以删除类型的映射。相反,你 应删除索引并使用新映射重新创建它。
但是,此功能由Delete By Query Plugin提供。
逐个删除插件添加了对删除所有内容的支持 与指定查询匹配的文档(来自一个或多个索引)。 它是有问题的逐个查询功能的替代品 已从Elasticsearch核心中删除。
只需构建一个查询,过滤您要删除的索引中的类型,并将其作为"删除查询的基础"。