2015-03-21 7 views
1

Я пытаюсь сделать функцию, используя elasticsearch V 1.4.4 в node.js реагировать с ошибкойУпругие Поиск Уникальный Constraint

ОШИБКА: дублирующие _id

как в MongoDB, когда мы попробуйте вставить документ в индекс с дубликатом _Id. Эластичный поиск не дал такой ошибки, несмотря на то, что он будет изменить документ существует с этим _id.


Я создал функцию, которая сначала делает запрос на эластичность, чтобы найти запись с этим идентификатором, вывести ошибку. Но это не работает в реальном времени. В реальном времени я имею в виду, что если я попытаюсь вставить документы с новым идентификатором, тогда все они будут вставлять и увеличивать версию doc.I пытались _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 >>>>>>>>"); 
    }); 
}; 

ответ

0

Вы можете использовать параметр op_type (операция типа) со значением create в ваших запросов, это будет возвращать ошибку, если вы пытаетесь создать документ, который уже существует , Из docs:

Операция индекса также принимает op_type, который может быть использован, чтобы заставить операции создания, что позволяет поведения «путы-если-отсутствует». Когда используется create, операция индекса завершится неудачно, если документ по этому идентификатору уже существует в индексе.

+0

сэр, я также хочу применить это уникальное ограничение для полей. ** пример ** пусть у меня есть поле с именем e-mail, и я не хочу, чтобы два документа имели одинаковый идентификатор электронной почты. –

Смежные вопросы