Looking for elasticsearch Answers? Try Ask4KnowledgeBase
Looking for elasticsearch Keywords? Try Ask4Keywords

ElasticsearchKonfiguracja elasticsearch


Uwagi

Elasticsearch jest dostarczany z zestawem wartości domyślnych, które zapewniają dobre przygotowanie do pracy. Domniemane stwierdzenie jest takie, że niekoniecznie jest ono świetne dla produkcji, która musi być dostosowana do twoich własnych potrzeb i dlatego nie można jej przewidzieć.

Domyślne ustawienia ułatwiają pobieranie i uruchamianie wielu węzłów na tym samym komputerze bez żadnych zmian w konfiguracji.

Gdzie są ustawienia?

Wewnątrz każdej instalacji Elasticsearch znajduje się config/elasticsearch.yml . W tym miejscu działają następujące ustawienia :

  • cluster.name
    • Nazwa klastra, do którego dołącza węzeł. Wszystkie węzły w tym samym klastrze muszą mieć tę samą nazwę.
    • Obecnie domyślnie jest elasticsearch .
  • node.*
    • node.name
      • Jeśli nie zostanie podany, losowa nazwa będzie generowana przy każdym uruchomieniu węzła . To może być zabawne, ale nie jest dobre dla środowisk produkcyjnych.
      • Nazwy nie muszą być unikalne, ale powinny być unikalne.
    • node.master
      • Ustawienie boolowskie. Kiedy true , oznacza to, że węzeł jest uprawnionym węzeł główny i może być wybrany węzeł nadrzędny.
      • Domyślnie true , co oznacza, że każdy węzeł jest odpowiednim węzłem głównym.
    • node.data
      • Ustawienie boolowskie. Wartość true oznacza, że węzeł przechowuje dane i obsługuje działania związane z wyszukiwaniem.
      • Domyślnie true .
  • path.*
    • path.data
      • Lokalizacja, w której zapisywane są pliki dla węzła. Wszystkie węzły używają tego katalogu do przechowywania metadanych, ale węzły danych będą go również używać do przechowywania / indeksowania dokumentów.
      • Domyślnie to ./data .
        • Oznacza to, że data zostaną utworzone jako katalog równorzędny do config w katalogu Elasticsearch.
    • path.logs
      • Lokalizacja, w której zapisywane są pliki dziennika.
      • Domyślnie ./logs .
  • network.*
    • network.host

      • Domyślnie _local_ , który jest w rzeczywistości _local_ localhost .
        • Oznacza to, że domyślnie nie można komunikować się z węzłami spoza bieżącej maszyny!
    • network.bind_host

      • Potencjalnie tablica, informuje to Elasticsearch, jakie adresy bieżącej maszyny mają również wiązać gniazda.
        • Ta lista umożliwia komputerom spoza komputera (np. Innym węzłom w klastrze) komunikowanie się z tym węzłem.
      • Domyślnie to network.host .
    • network.publish_host

      • Pojedynczy host używany do reklamowania się w innych węzłach, w jaki sposób najlepiej komunikować się z tym węzłem.
        • Dostarczając tablicę do network.bind_host , powinien być to jeden host, który ma być używany do komunikacji między węzłami.
      • Domyślnie network.host`.
  • discovery.zen.*
    • discovery.zen.minimum_master_nodes
      • Definiuje kworum dla wyborów głównych. Należy to ustawić za pomocą tego równania: (M / 2) + 1 gdzie M jest liczbą kwalifikujących się węzłów głównych (węzły używające node.master: true niejawnie lub jawnie).
      • Domyślnie 1 , co jest poprawne tylko dla klastra z jednym węzłem!
    • discovery.zen.ping.unicast.hosts
      • Mechanizm łączenia tego węzła z resztą klastra.
      • Powinno to zawierać listę odpowiednich węzłów głównych, aby węzeł mógł znaleźć resztę klastra.
      • Wartością, którą należy tu zastosować, jest network.publish_host tych innych węzłów.
      • Domyślnie localhost , co oznacza, że klastra dołącza tylko do komputera lokalnego.

Jakie typy ustawień istnieją?

Elasticsearch zapewnia trzy różne typy ustawień:

  • Ustawienia dla całego klastra
    • Są to ustawienia, które dotyczą wszystkich elementów w klastrze, takich jak wszystkie węzły lub wszystkie indeksy.
  • Ustawienia węzła
    • Są to ustawienia, które dotyczą tylko bieżącego węzła.
  • Ustawienia indeksu
    • Są to ustawienia, które dotyczą tylko indeksu.

W zależności od ustawienia może to być:

  • Zmieniany dynamicznie w czasie wykonywania
  • Zmieniono po ponownym uruchomieniu (zamknięciu / otwarciu) indeksu
    • Niektóre ustawienia na poziomie indeksu nie wymagają zamknięcia i ponownego otwarcia indeksu, ale mogą wymagać wymuszonego ponownego scalenia indeksu w celu zastosowania ustawienia.
      • Poziom kompresji indeksu jest przykładem tego rodzaju ustawienia. Można go zmieniać dynamicznie, ale tylko nowe segmenty korzystają ze zmiany. Jeśli więc indeks się nie zmieni, to nigdy nie skorzysta ze zmiany, chyba że wymusisz na indeksie odtworzenie jego segmentów.
  • Zmieniono po ponownym uruchomieniu węzła
  • Zmieniono po ponownym uruchomieniu klastra
  • Nigdy się nie zmieniłem

Zawsze sprawdzaj w dokumentacji swojej wersji Elasticsearch, co możesz zrobić, a czego nie możesz zrobić z ustawieniem.

Jak mogę zastosować ustawienia?

Możesz ustawić ustawienia na kilka sposobów, z których niektóre nie są sugerowane:

  • Argumenty wiersza poleceń

W Elasticsearch 1.xi 2.x większość ustawień można przesłać jako Właściwości systemowe Java poprzedzone es. :

$ bin/elasticsearch -Des.cluster.name=my_cluster -Des.node.name=`hostname`

W Elasticsearch 5.x zmienia się, aby uniknąć używania właściwości systemowych Java, zamiast niestandardowego typu argumentu z -E zamiast -Des. :

$ bin/elasticsearch -Ecluster.name=my_cluster -Enode.name=`hostname`

Takie podejście do stosowania ustawień działa świetnie, gdy używasz narzędzi takich jak Puppet, Chef lub Ansible do uruchamiania i zatrzymywania klastra. Jednak działa to bardzo słabo, gdy wykonuje się to ręcznie.

  • Ustawienia YAML
    • Pokazane w przykładach
  • Ustawienia dynamiczne
    • Pokazane w przykładach

Kolejność stosowania ustawień jest najbardziej dynamiczna:

  1. Ustawienia przejściowe
  2. Trwałe ustawienia
  3. Ustawienia wiersza poleceń
  4. Ustawienia YAML (statyczne)

Jeśli ustawienie zostanie ustawione dwa razy, jeden raz na którymkolwiek z tych poziomów, obowiązuje najwyższy poziom.

Konfiguracja elasticsearch Powiązane przykłady