2014-12-15 5 views
2

У меня есть два разных индекса - index1 и index2 В index1 У меня есть документы, идентификаторы которых соответствуют индексу2 (не спрашивайте причину, по которой это делается, но точка в том, что это так). Таким образом, количество и значения идентификаторов должны совпадать с индексами1 и индексом2. Иногда у меня отсутствует идентификатор в одной из таблиц ... так что вопрос: Есть ли способ сравнить идентификаторы index1 и index2? Например, я могу подсчитывать и количество записей в обоих индексах, и если они не совпадают, можно сравнить идентификатор каждого документа в Index1 с идентификатором в Index2 (проверьте, существует ли он), но он будет очень медленным, поэтому я ищу более легкое решение :)Elasticsearch сравнить два индекса

Любая идея будет оценена!

ответ

0

Вы можете добавить новое поле bool "in_index2" в index1 и считать это поле bool.

Мне не нравится это решение, но оно должно работать.

+0

Не получилось ... Возможно ли создать автоматический расчет поля в ES? –

0

Я тоже борюсь с этим - вы бы подумали, что это будет легко. Мои мысли

  1. Добавить в собственность, чтобы отслеживать, когда, наконец, нашел деталь - скажем FoundState обновление
  2. стреловидности index1 типа х, установите FoundState в NotFound
  3. Как заполнить новый index2 обновить соответствующий идентификатор в index1, показывающий его, был найден в новом индексе (FoundState Found). Вы даже можете обновить новый элемент, показывая, что он был найден или нет.

Тогда вы можете фильтровать по index2 новым предметам или предметов найдены, и index1 может быть отфильтрован на основе FoundState для отсутствующих элементов

Дополнительной работы обновления элементов в первом индексе является болью, но единственный способ, которым я могу это видеть

0

Одна идея найти документы, которые присутствуют только в одном из индексов, может заключаться в том, чтобы переиндексировать оба индекса в новый третий, а затем искать в этом индексе для документов с версией> 1.

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