Wymagania
- Wymagana jest usługa Elasticsearch w wersji 7 lub wyższej (uruchamiana w poniższej sekcji Konfiguracja i punkcie 3).
Konfiguracja
- Wymagana jest instalacja Dockera wraz z Docker Compose.
- W repozytorium kodu (lub docker-compose.yml) plusworkflow/plusworkflow-core znajduje się docker-compose.yml do uruchomienia elastica i Kibany lokalnie.
Będąc w lokalizacji powyższego pliku docker-compose.yml należy wywołać:
Code Block docker compose up
Trzeba ustawić flagę w experimental.properties:
Code Block elasticProcessSearch=true
Dodać plik w katalogu domowym w configu: elastic.properties o zawartości:
Code Block elastic.hostname=localhost elastic.port=9200 elastic.username=elastic elastic.password=elastic #Opcjonalne elastic.environment= elastic.protocol=
- Opcjonalnie można podać parametr elastic.environment, który jest przydatny w przypadku jednej usługi Elasticsearch dla kilku instancji systemu. Podajemy w nim unikalną nazwę dla każdej z tych instancji.
Nazwa nie może zawierać następujących znaków: spacja, ", *, \, <, |, ,, >, /, ? Opcjonalnie można podać parametr elastic.protocol, który określa, czy komunikacja z usługą Elasticsearch powinna odbywać się po HTTPS, czy HTTP (W zależności od ustawień serwera). Podajemy w nim wartość https lub http. W przypadku braku parametru, komunikacja odbywa się domyślnie po HTTP.
Info title Uwaga Jeżeli komunikacja z Elasticsearch odbywa się po HTTPS, to należy uzupełnić parametr elastic.protocol wartością https.
Aby komunikacja z usługą działała poprawnie, należy wgrać ważny certyfikat do systemu. Można skorzystać z systemowej zakładki Certyfikaty.- Włączyć parametr systemowy ElasticEnabled (jeśli istnieje)
- Dodać zadanie zaplanowane o nazwie: Indeksowanie procesów zadań. Po jego uruchomieniu zastaną zaindeksowane wszystkie procesy i zadania.
Zadanie posiada parametr "Rozmiar części", który odpowiada za dzielenie indeksowanych danych. Manipulując nim można mieć wpływ na szybkość wykonywania zadania.
Zadnie po przetworzeniu każdej z części zapisuje w parametrze systemowym ElasticLastIndexedProcessObjectId ID ostatniego zaindeksowanego procesu z paczki. W przypadku wystąpienia błędu podczas wykonywania zadania i po jego ponownym uruchomieniu zadanie wznowi indeksowanie od ID procesu zapisanego w parametrze. W celu zresetowania zadania, należy jako wartość parametru podać 0.
Obsługa Kibany
...
Przy pierwszym uruchomieniu Kibany trzeba ustawić patterny dla indeksów (process* dla procesów i activity* dla zadań).
...
Management -> Stack Management -> IndexManagement
...
W przypadku wystąpienia błędu:
Code Block |
---|
Validation Failed: 1: this action would add [2] shards, but this cluster currently has [1000]/[1000] maximum normal shards open; |
Należy zwiększyć maksymalny limit aktywnych shard'ów z poziomu zakładki Management -> Dev Tools wywołując:
Code Block |
---|
PUT /_cluster/settings
{
"persistent" : {
"cluster.max_shards_per_node": "2000"
}
} |
Usuwanie wiele indeksów na raz
Note |
---|
UWAGA. Usuwanie wielu indeksów bez znajomości składni może skutkować usunięciem nadmiarowej ilości danych. |
Domyślnie opcja usuwania wielu niejednoznacznych indeksów jest wyłączona.
Aby móc korzystać z takiej opcji należy wywołać:
Code Block |
---|
PUT /_cluster/settings
{
"transient": {
"action.destructive_requires_name":false
}
} |
Przykłady:
Usuwanie indeksów z prefixem activity:
Code Block |
---|
DELETE /activity* |
Usuwanie wszystkich indeksów (ukryte indeksy nie zostaną usunięte):
Code Block |
---|
DELETE _all |
Obsługa Dockera
Usuwanie kontenerów - Będąc w lokalizacji pliku docker-compose.yml należy wywołać:
Code Block docker compose down
Jeżeli chcemy również usunąć wolumen ze wszystkimi danymi wywołujemy z opcją -v
Code Block docker compose down -v
Jeżeli chcemy utworzyć kontenery bez wyświetlania logów, dodajemy komendę -d
Code Block docker compose up -d
Aby wyświetlić status kontenerów należy wykonać:
Code Block docker stats
Uwagi
- Po usunięciu/anulowaniu procesu lub zawieszeniu/anulowaniu/przywróceniu zadania z poziomu widoku wyników wyszukiwania daną mogą nie być spójne, należy ponowne wyszukać.
- Wyszukiwanie zadań z użyciem pól związanych z terminami ostatecznymi nie wyszukuje tylko zadań z terminami ostatecznymi.
- Zmienne tabelaryczne są wyświetlane wyłącznie w ramach jednego wiersza.
Przydatne linki:
- Jak działa elastic - https://www.elastic.co/blog/found-elasticsearch-top-down
- Multi-nodes docker - https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html#docker-cli-run-dev-mode
- Wydajność - https://www.elastic.co/guide/en/elasticsearch/reference/8.6/tune-for-indexing-speed.html
- Optymalizacja wyszukiwania - https://www.elastic.co/blog/found-optimizing-elasticsearch-searches/