[英]How to delete multiple id documents in elasticsearch index
var elasticsearch = require('elasticsearch');
var client = new elasticsearch.Client({
host: 'ABC',
log: 'trace',
apiVersion: '7.1'
});
client.delete({
index: 'allevents',
type: '_doc',
id:"2"
}).then(function(resp) {
console.log("Successful query!");
console.log(JSON.stringify(resp, null, 4));
}, function(err) {
console.trace(err.message);
});
When I delete a single document by passing single id value.its working fine.当我通过传递单个 id 值删除单个文档时,它工作正常。
But I want to delete multiple documents in a single query .但我想在一个查询中删除多个文档。 How will we do?
我们会怎么做?
I tried我试过了
client.delete({
index: 'allevents',
type: '_doc',
id: ["2","3"]
})
This function returning error.此 function 返回错误。
I suggest to leverage the bulk
method / API , like this:我建议利用
bulk
方法/ API ,如下所示:
var elasticsearch = require('elasticsearch');
var client = new elasticsearch.Client({
host: 'ABC',
log: 'trace',
apiVersion: '7.1'
});
var idsToDelete = ["2", "3"];
var bulk = idsToDelete.map(id => {
return {
'delete': {
'_index': 'allevents',
'_type': '_doc',
'_id': id
}
};
});
client.bulk({
body: bulk
}).then(function(resp) {
console.log("Successful query!");
console.log(JSON.stringify(resp, null, 4));
}, function(err) {
console.trace(err.message);
});
Another way of doing it is to leverage the deleteByQuery
method / API :另一种方法是利用
deleteByQuery
方法/ API :
var elasticsearch = require('elasticsearch');
var client = new elasticsearch.Client({
host: 'ABC',
log: 'trace',
apiVersion: '7.1'
});
var idsToDelete = ["2", "3"];
client.deleteByQuery({
index: 'allevents',
type: '_doc',
body: {
query: {
terms: {
_id: idsToDelete
}
}
}
}).then(function(resp) {
console.log("Successful query!");
console.log(JSON.stringify(resp, null, 4));
}, function(err) {
console.trace(err.message);
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.