【问题标题】:Elastic Search Unique Constraint弹性搜索唯一约束
【发布时间】:2015-03-21 12:27:39
【问题描述】:

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

错误:重复 _id

就像在 mongoDB 中,当我们尝试在具有重复 _Id 的索引中插入文档时。 尽管 Elastic Search 会修改带有该 _id 的文档,但它并没有提供这样的错误。


我创建了一个函数,它首先在 elastic 上进行查询以查找具有该 id 的记录会引发错误。 但它不能实时工作。通过实时我的意思是,如果我尝试插入具有新 ID 的文档,那么它们都会插入并增加文档的版本。我尝试过 _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 >>>>>>>>");
    });
};

【问题讨论】:

    标签: node.js elasticsearch


    【解决方案1】:

    您可以在请求中使用带有值createop_type 参数(操作类型),如果您尝试创建一个已经存在的文档,这将返回错误。来自docs

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

    【讨论】:

    • 先生,我也想在字段上应用这个独特的约束。 示例让我有一个名为电子邮件的字段,我不希望两个文档具有相同的电子邮件 ID。
    猜你喜欢
    • 2023-03-11
    • 2016-11-05
    • 2014-10-01
    • 2015-12-29
    • 2011-03-18
    • 2017-09-13
    • 1970-01-01
    • 1970-01-01
    • 2021-06-29
    相关资源
    最近更新 更多