Я планирую извлечь (по сути, очистить, с разрешения) некоторые данные с веб-страницы и сохранить их в 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 для этого?
По сути, я хочу поменять данные одного индекса на другой.