ElasticSearch /节点:按匹配项删除项目

时间:2019-06-19 19:56:35

标签: node.js elasticsearch

我正在尝试仅删除带有“ datastorage.clientID”:“ 00001”的索引,但是它删除了所有项目,您在此代码中看到任何错误吗?

deleteAllByClientID: function (clientID,callback) {
        console.log("clientID" , clientID)
        client.indices.delete({ 
            index: 'datastorage',
            body: {
                query: {
                    "match" : {
                        "datastorage.clientID" : clientID
                    }
                }
            }
        }, function (err, res) {
            callback(err, res);
        });

    }

上方的删除功能将返回{已确认:true}

请考虑此搜索功能正常

GetItems: function (clientID,callback) {

        client.search({
            index: 'datastorage',
            scroll : "1m", 
            size:10000,
            body: {
                query: {
                        "match" : {
                            "datastorage.clientID" : clientID
                        }
                }
            }
        }, function (err, resp, status) {
            callback(err,resp);
        });
    },

感谢安德里亚

1 个答案:

答案 0 :(得分:0)

要删除与查询匹配的文档,应使用Delete By Query API。使用Javascript客户端,您应该调用client.deleteByQuery方法(请参见client documentation)。您的情况如下所示:

deleteAllByClientID: function (clientID,callback) {
        console.log("clientID" , clientID)
        client.deleteByQuery({ 
            index: 'datastorage',
            body: {
                query: {
                    "match" : {
                        "datastorage.clientID" : clientID
                    }
                }
            }
        }, function (err, res) {
            callback(err, res);
        });

    }
相关问题