Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  1. Wymagana jest usługa Elasticsearch w wersji 7 lub wyższej  (uruchamiana w poniższej sekcji Konfiguracja i punkcie 3).

...

  1. Zalecane jest stosowanie dysków SSD na maszynie, gdzie znajduje się usługa Elastic.
  2. Ilość pamięci RAM to minimum 8GB. Zaleca się, by pamięć RAM wynosiła 16-64GB. Należy zwrócić uwagę jaką pamięcią dysponuje kontener Elastica.
  3. Jeśli usługa Elastica znajduje się w innej lokalizacji niż system Plusworkflow należy umożliwić połączenie o jak największej przepustowości pomiędzy nimi.

    Warning
    titleElastic na środowisku produkcyjnym

    W przypadku używania ElasticSearch na środowisku produkcyjnym zaleca się ustawić vm.max_map_count na co najmniej 262144

    Linux:
    grep vm.max_map_count /etc/sysctl.conf

    sysctl -w vm.max_map_count=262144

     

 

 

Problemy z wydajnością indeksowania oraz pamięcią

  1. Zwiększyć 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
  2. 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.
  3. Spróbować zwiększyć limit przepustowości w Kibanie z poziomu zakładki Management -> Dev Tools wywołując (domyślnie jest to 20mb):

    Code Block
    PUT /_cluster/settings
    {
      "persistent" : {
            "indices.store.throttle.max_bytes_per_sec" : "100mb"
       }
    }

    Na czas indeksowania można też dokonać następującej zmiany:

    Code Block
    PUT /_cluster/settings
    {
      "transient" : {
            "indices.store.throttle.type" : "none" 
       }
    }

    Po skończonym indeksowaniu należy ustawić wartość "merge" tym samym poleceniem.

  4. Wyłączenie swapping https://www.elastic.co/guide/en/elasticsearch/reference/7.17/setup-configuration-memory.html

Obsługa Kibany

  1. Kibana uruchomiona z powyższej konfiguracji dostępna jest pod adresem: http://localhost:5601/ Dane dostępowe takie jak w elastic.properties powyżej.
  2. Przy pierwszym uruchomieniu Kibany trzeba ustawić patterny dla indeksów (process* dla procesów i activity* dla zadań).

  3. Zaindeksowane dokumenty przeglądamy w zakładce Discovery.
  4. W przypadku problemów ze zgodnością danych w elasticu (np. po zmianie typu jakiegoś indeksowanego pola) należy przejść do:

    Management -> Stack Management -> IndexManagement

    zaznaczyć wszystko (Include rollup indices i Include hidden indices muszą być odznaczone) i wybrać delete indices. Następnie trzeba przeindeksować wszystkie dokumenty zadaniem zaplanowanym.

  5. 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 w parametrze systemowym ElasticClusterMaxShardsPerNode.

    Alternatywnie w Kibanie z poziomu zakładki Management -> Dev Tools wywołując:

    Code Block
    PUT /_cluster/settings
    {
      "persistent" : {
          "cluster.max_shards_per_node": "2000"
      }
    }
  6. 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:

    1. Usuwanie indeksów z prefixem activity:

      Code Block
      DELETE /activity*


    2. Usuwanie wszystkich indeksów (ukryte indeksy nie zostaną usunięte):

      Code Block
      DELETE _all



...

  1. Jak działa elastic - https://www.elastic.co/blog/found-elasticsearch-top-down
  2. Multi-nodes docker - https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html#docker-cli-run-dev-mode
  3. 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
  4. Optymalizacja wyszukiwania - https://www.elastic.co/blog/found-optimizing-elasticsearch-searches/
  5. Wymagania sprzętowe - https://www.elastic.co/guide/en/elasticsearch/guide/master/hardware.html
  6. Optymalizacja pamięci - https://www.elastic.co/guide/en/elasticsearch/reference/7.17/setup-configuration-memory.html