...
- main index for procedures (name: procedures-<VERSION>, alias: procedures)
- timestamp index for sync (name: procedures_ts)
CLI script for ops
[More information: ](./docs/cli.md)
Indexing WorkFlow
...
For usage
| Code Block | ||
|---|---|---|
| ||
➜ manage --help
Usage: manage [OPTIONS] COMMAND [ARGS]...
This is the Search interactive shell and a set of devops scripts for
maintenance.
Options:
--help Show this message and exit.
Commands:
debug Shows the parsed manage file -V shows version
indexes Manages elastic indexes
init Initialize a manage shell in current directory $ manage init...
shell Runs a Python shell with context |
For work with Procedure documents
| Code Block | ||
|---|---|---|
| ||
➜ manage indexes
Usage: manage indexes [OPTIONS] COMMAND [ARGS]...
With this command you can manage elastic indexes
Options:
--help Show this message and exit.
Commands:
delete-index Delete elastic index
list-index Listing elastic indexes |
Indexing WorkFlow
Search Indexing WorkFlow
Сервис Search працює на базі ElasticSearch та забезпечує:
- CBD API для роботи з ElasticSearch
- Генерацію темплейтів для побудови індексів
- Отримання інформації із Mirror Services CBD та надсилання інформації в ElasticSearch
- Реіндексацію даних.
Indexing WorkFlow
При любом релизе происходит следующий порядок действий:
...
Выполняються k8s (pre-upgrade) джобы по созданию темплейтов для индексов. Поды джоб в своих названиях имеют search-create-index-action Для каждого типа обьекта, создаеться отдельный темплейт с матчингом по имени (action, lease, procedures, ...). Эластик использует эти шаблоны, для дальнейшего автоматического построения индексации, разделения процедур по различным индексам, выделение полей для полнотекстового поиска и ... Порядок выполнения действий в джобе следующий:
Проверить сушествование темплейта в ElasticSearch
- При наличии, проверить соответствия версии темплейта из релиза и тот который в ElasticSearch
- Если версии отличаються, удалить все индексы связаные с этим темплейтом
- Если версии одинаковые, нечего не делать
- При наличии, проверить соответствия версии темплейта из релиза и тот который в ElasticSearch
Обносить/Создать темплейт
!Этот набор действий должен всегда предшествовать любой операции по добавлению новых данных в эластик. Если не будет правильного шаблона, эластик не сможет правильно построить индексы и search-api не вернет не какого результата🚀️
...
- Запускаеться сервис k8s Search Api. Поды в своих названиях имеют *search-api
...
- Запускаються поды реалтайм синхронизации всех новых данных получаемых из Mirror Services. Поды в своих названиях имеют search-mirror-client-action Из ElasticSearch он получает последнию временную отметку засинхронизированных данных и запрашивает у Mirror Services данные с этого момента. Порядок выполнения действий в поде следующий:
- Получить временную метку последних засинхронезированых документов из ElasticSearch:
- При наличии временной метки, запросить у Mirror Services данные начиная с неё и отправить их в ElasticSearch
- При отсутствии временной метки:
- Запросить у Mirror Services все данные и отправить их в ElasticSearch
- Дождаться от мирор сервиса ответа об окончании синхронизации
- Завершить работу и перезапуститься средствами k8s с выполнением операций с начала текушей последовательности
- Получить временную метку последних засинхронезированых документов из ElasticSearch:
...
- Запускаються джобы по реиндексации данных из Mirror Services. Поды в своих названиях имеют search-reindex-data После запуска, через 300 секунд, получают весь набор данных из Mirror Services и отправляют его в ElasticSearch. Это сделано для того чтобы после каждого релиза и миграций, в ElasticSearch всегда были актуальные данные. Порядок выполнения действий в джобе следующий:
- Подождать 300 секунд
- Запросить у Mirror Services все данные и отправить их в ElasticSearch
- Дождаться от мирор сервиса ответа об окончании синхронизации
- Завершить работу