首页 文章

弹性搜索唯一约束

提问于
浏览
1

我试图在node.js中使用elasticsearch v 1.4.4创建一个函数来响应错误

错误:重复_id

当我们尝试在带有重复_Id的索引中插入文档时,就像在mongoDB中一样 . 弹性搜索没有提供这样的错误,尽管它将_id存在于该_id中 .


我已经创建了一个函数,它首先对弹性进行查询,以查找具有该id的记录抛出错误 . 但它不能在实时工作 . 实时我的意思是,如果我尝试插入带有新id的文档,那么他们将插入并增加doc的版本 . 我已经尝试 _refresh 但是不起作用 .

我的功能是......

function checkDuplicate(index,type,id,body){
    client.exists({index: index, type: type, id: id}, function (err, res) {
       if (res === false) {
            client.index({index: index, type: type,id:id, body: json}, function (err, response) {
                resp.send(JSON.stringify(response));
            })
        }
        else
            resp.send("Error : Duplicate index doc >>>>>>>>");
    });
};

1 回答

  • 0

    您可以在请求中使用值为 createop_type 参数(操作类型),如果您尝试创建已存在的文档,则会返回错误 . 来自docs

    索引操作还接受可用于强制创建操作的op_type,允许“put-if-absent”行为 . 使用create时,如果索引中已存在该id的文档,则索引操作将失败 .

相关问题