弹性搜索唯一约束

时间:2015-03-21 12:27:40

标签: node.js elasticsearch

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

  

错误:重复_id

当我们尝试在带有重复_Id的索引中插入文档时,就像在mongoDB中一样。 弹性搜索没有提供这样的错误,尽管它将修改与_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 :(得分:0)

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

  

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