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.
- W celu zmiany nazwy użytkownika i hasła do usługi należy zmodyfikować parametry ELASTIC_USERNAME i ELASTIC_PASSWORD w sekcji elasticsearch w pliku docker-compose.yml.
Należy też zmienić parametry ELASTICSEARCH_USERNAME i ELASTICSEARCH_PASSWORD sekcji kibana powyższego pliku (połączenie Kibany z usługą Elastica). 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.
Problemy z wydajnością indeksowania
- Zmienić wartość -Xmx parametru ES_JAVA_OPTS sekcji elasticsearch w pliku docker-compose.yml na odpowiednio wyższą wartość.
Kontener elastica należy zaktualizować przy użyciu polecenia:
Code Block docker compose up
- Zalecane jest stosowanie dysków SSD na maszynie, gdzie znajduje się usługa Elastic.
- W przypadku, gdy usługa Elastica znajduje się na serwerze w innej lokalizacji można zmniejszać wartość parametru "Rozmiar części" zadania zaplanowanego do indeksowania. Spowoduje to zmniejszenie requesta przesyłanego do Elastica.
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.
Jeśli wystąpi poniższy błąd podczas eksportu wyników wyszukiwania do pliku:
Code Block java.io.IOException: entity content is too long [356732089] for the configured buffer limit [104857600]
to należy zmniejszyć wartość parametru systemowego PackSizeInAdvanceSearchExport.
Błąd ten oznacza, że request przesyłany do Elastica jest za duży (domyślnie jest to 100 MB). Istnieje możliwość zwiększenia tego limitu po stronie Elastica (bez zmniejszania parametru systemowego), jednak jest to niezalecane.
Limit można zwiększyć w pliku docker-compose.yml w sekcji elasticsearch -> environment, dodając linijkę:
Code Block "http.max_content_length": "200mb"
z odpowiednią wartością rozmiaru request'a. Kontener elastica należy zaktualizować przy użyciu polecenia:
Code Block docker compose up
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
https://www.elastic.co/guide/en/elasticsearch/guide/master/indexing-performance.html - Optymalizacja wyszukiwania - https://www.elastic.co/blog/found-optimizing-elasticsearch-searches/
- Wymagania sprzętowe - https://www.elastic.co/guide/en/elasticsearch/guide/master/hardware.html