2016-01-08 8 views
0

Я пытаюсь предотвратить дублирование записей в elasticsearch, но на основе одного из параметров в данных. Например, если у меня есть такой объект, как показано ниже, я бы хотел, чтобы другая запись имела тот же массив event_ids. Есть идеи, как это сделать?Создать документ в Elasticsearch без повторяющихся параметров

Я кодирую это, используя API javascript elasticsearch, если это имеет значение.

{ start_date: '2015-11-19T08:46:14-05:00', 
end_date: '2015-11-19T08:46:38-05:00', 
length_seconds: 24, 
number_events: 5, 
event_ids: [ 5589253, 5589254, 5589255, 5589256, 5510380 ] }, 

ответ

2

Вы можете сделать строку со всеми идентификаторами событий сцепленных, хэш, а затем использовать его в качестве идентификатора документа. Вы также должны сортировать и удалять дубликаты.

Так, например: sha1("5510380|5589253|5589254|5589255|5589256")

Таким образом, документ, с теми же событиями получит тот же _id. Затем вы можете проверить, существует ли этот документ или нет.

+0

Любые идеи для чего-то, что использует меньше вычислительных ресурсов, чем хэш-код SHA? – Rob

+0

Любой хэш бы сделал, он используется только для сокращения строки. Например, быстрый - это [murmurhash3] (https://github.com/karanlyons/murmurHash3.js). Если список не очень длинный, тогда может также работать необработанная строка. –

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