Сине-зеленое развертывание данных elasticsearch?

Я планирую извлечь (по сути, очистить, с разрешения) некоторые данные с веб-страницы и сохранить их в elasticsearch (вы знаете, для поиска).

Хотя у меня есть разрешение на сбор данных с сайта,

  • для этих данных нет API или другого структурированного источника
  • он создается вручную прямо в HTML
  • нет уникальных идентификаторов, которые отличают одну запись от другой (по сути, я буду извлекать около 1000-5000 записей из DOM).

Когда я сохраняю это в es, я планирую поместить это в один индекс и в тип отображения, скажем, thing.

Однако со временем источник (веб-страница HTML), вероятно, изменится, поскольку они добавляют/удаляют/изменяют содержимое некоторых из этих записей. Поскольку идентификаторов в исходнике нет, я не могу легко определить новые (и, что еще хуже, удаленные или измененные).

Я хочу обновлять свой индекс es, и я думаю, что это какой-то сине-зеленый механизм:

  • Я запускаю процесс извлечения по некоторому расписанию (ежедневно/еженедельно) в зависимости от скорости изменения исходного кода.
  • Каждый раз, когда он запускается, процесс создает другой индекс (или может быть вообще новым кластером). Скажем, текущий индекс — index-prod, а новый, созданный процессом, — index-rc (кандидат на выпуск).
  • Он проверяет index-rc на основе некоторых эвристик (гибкая проверка скорости по количеству записей, образцы запросов, которые, как мы знаем, должны работать и т. д.).
  • And if it's valid, it either:
    • A. slowly flips queries into the new cluster/index
    • или B. переворачивается одним выстрелом к ​​новому кластеру/индексу

Я планирую разместить кластер elasticsearch с помощью сервиса AWS Elastisearch и, возможно, мог бы что-то придумать, используя Route 53 CNAME (и, возможно, ELB?), но я хотел знать, есть ли более неявная поддержка в самом elasticsearch для этого?

По сути, я хочу поменять данные одного индекса на другой.


person arnab    schedule 02.11.2016    source источник


Ответы (3)


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

Я также полагаю, что для медленного изменения конечной точки запросов лучше всего подойдет какой-нибудь балансировщик нагрузки, например nginx. В Интернете есть много кейсов по этому поводу.

person Allan Sene    schedule 02.11.2016

Я думаю, вы могли бы использовать API переиндексации. за это.

person jhilden    schedule 02.11.2016
comment
переиндекс выглядит полезным для копирования из одного в другой. Мне нужно повторно засеять index. псевдонимы выглядят как правильное решение, основанное на других ответах. - person arnab; 02.11.2016

Я услышал об этом из другого источника за пределами Stackoverflow.

person arnab    schedule 02.11.2016