Elasticsearch - Moduły

Elasticsearch składa się z szeregu modułów, które odpowiadają za jego funkcjonalność. Te moduły mają dwa typy ustawień w następujący sposób -

  • Static Settings- Te ustawienia należy skonfigurować w pliku konfiguracyjnym (flexiblesearch.yml) przed uruchomieniem Elasticsearch. Musisz zaktualizować wszystkie węzły, których dotyczy problem w klastrze, aby odzwierciedlić zmiany wprowadzone przez te ustawienia.

  • Dynamic Settings - Te ustawienia można ustawić w usłudze Elasticsearch na żywo.

Omówimy różne moduły Elasticsearch w kolejnych sekcjach tego rozdziału.

Routing na poziomie klastra i alokacja fragmentów

Ustawienia na poziomie klastra decydują o alokacji fragmentów do różnych węzłów i ponownej alokacji fragmentów w celu ponownego zrównoważenia klastra. Oto następujące ustawienia do kontrolowania alokacji fragmentów.

Alokacja fragmentów na poziomie klastra

Oprawa Możliwa wartość Opis
cluster.routing.allocation.enable
wszystko Ta wartość domyślna umożliwia alokację fragmentów dla wszystkich rodzajów fragmentów.
prawybory Pozwala to na alokację fragmentów tylko dla odłamków podstawowych.
nowe_podstawowe Umożliwia to alokację fragmentów tylko dla odłamków podstawowych dla nowych indeksów.
Żaden Nie zezwala to na alokacje fragmentów.
cluster.routing.allocation .node_concurrent_recoveries Wartość liczbowa (domyślnie 2) Ogranicza to liczbę równoczesnych odzyskiwania fragmentów.
cluster.routing.allocation .node_initial_primaries_recoveries Wartość liczbowa (domyślnie 4) To ogranicza liczbę równoległych pierwotnych pierwotnych odzysków.
cluster.routing.allocation .same_shard.host Wartość logiczna (domyślnie fałsz) Ogranicza to alokację więcej niż jednej repliki tego samego fragmentu w tym samym węźle fizycznym.
indices.recovery.concurrent _streams Wartość liczbowa (domyślnie 3) Kontroluje liczbę otwartych strumieni sieciowych na węzeł w czasie odzyskiwania fragmentu z fragmentów równorzędnych.
indices.recovery.concurrent _small_file_streams Wartość liczbowa (domyślnie 2) Kontroluje liczbę otwartych strumieni na węzeł dla małych plików o rozmiarze mniejszym niż 5 MB w czasie odzyskiwania fragmentu.
cluster.routing.rebalance.enable
wszystko Ta wartość domyślna umożliwia równoważenie wszystkich rodzajów fragmentów.
prawybory Pozwala to na równoważenie fragmentów tylko dla odłamków podstawowych.
repliki Pozwala to na równoważenie odłamków tylko dla odłamków replik.
Żaden Nie pozwala to na żadne równoważenie fragmentów.
cluster.routing.allocation .allow_rebalance
zawsze Ta wartość domyślna zawsze umożliwia ponowne zrównoważenie.
indeksy_podstawowe _aktywne Pozwala to na ponowne zrównoważenie, gdy wszystkie podstawowe fragmenty w klastrze są przydzielone.
Indices_all_active Umożliwia to ponowne zrównoważenie, gdy przydzielone są wszystkie fragmenty podstawowe i repliki.
cluster.routing.allocation.cluster _concurrent_rebalance Wartość liczbowa (domyślnie 2) Ogranicza to liczbę równoczesnego równoważenia fragmentów w klastrze.
cluster.routing.allocation .balance.shard Wartość zmiennoprzecinkowa (domyślnie 0,45f) Definiuje współczynnik wagi dla fragmentów przydzielonych w każdym węźle.
cluster.routing.allocation .balance.index Wartość zmiennoprzecinkowa (domyślnie 0,55f) Definiuje stosunek liczby fragmentów na indeks przydzielonych w określonym węźle.
cluster.routing.allocation .balance.threshold Nieujemna wartość zmiennoprzecinkowa (domyślnie 1.0f) Jest to minimalna wartość optymalizacji operacji, które należy wykonać.

Alokacja fragmentów oparta na dysku

Oprawa Możliwa wartość Opis
cluster.routing.allocation.disk.threshold_enabled Wartość logiczna (domyślnie prawda) To włącza i wyłącza decydowanie o alokacji dysku.
cluster.routing.allocation.disk.watermark.low Wartość ciągu (domyślnie 85%) Oznacza to maksymalne wykorzystanie dysku; po tym czasie żaden inny fragment nie może zostać przydzielony do tego dysku.
cluster.routing.allocation.disk.watermark.high Wartość ciągu (domyślnie 90%) Oznacza to maksymalne wykorzystanie w momencie przydziału; jeśli ten punkt zostanie osiągnięty w momencie alokacji, Elasticsearch przydzieli ten fragment na inny dysk.
cluster.info.update.interval Wartość ciągu (domyślnie 30 s) To jest odstęp czasu między sprawdzeniami użycia dysku.
cluster.routing.allocation.disk.include_relocations Wartość logiczna (domyślnie prawda) To decyduje, czy uwzględnić aktualnie przydzielane fragmenty podczas obliczania użycia dysku.

Odkrycie

Ten moduł pomaga klastrze wykrywać i utrzymywać stan wszystkich znajdujących się w nim węzłów. Stan klastra zmienia się, gdy węzeł jest dodawany lub usuwany z niego. Ustawienie nazwy klastra służy do tworzenia logicznej różnicy między różnymi klastrami. Istnieje kilka modułów, które pomagają w korzystaniu z interfejsów API dostarczanych przez dostawców usług w chmurze i są one przedstawione poniżej -

  • Wykrywanie platformy Azure
  • Odkrycie EC2
  • Wykrywanie silników obliczeniowych Google
  • Odkrycie zen

Przejście

Ten moduł utrzymuje stan klastra i dane fragmentu podczas pełnych ponownych uruchomień klastra. Poniżej przedstawiono ustawienia statyczne tego modułu -

Oprawa Możliwa wartość Opis
gateway.expected_nodes wartość liczbowa (domyślnie 0) Liczba węzłów, które mają znajdować się w klastrze na potrzeby odzyskiwania lokalnych fragmentów.
gateway.expected_master_nodes wartość liczbowa (domyślnie 0) Liczba węzłów głównych, które mają znajdować się w klastrze przed rozpoczęciem odtwarzania.
gateway.expected_data_nodes wartość liczbowa (domyślnie 0) Liczba węzłów danych oczekiwana w klastrze przed rozpoczęciem odtwarzania.
gateway.recover_after_time Wartość ciągu (domyślnie 5 m) To jest odstęp czasu między sprawdzeniami użycia dysku.
cluster.routing.allocation. disk.include_relocations Wartość logiczna (domyślnie prawda)

Określa czas, przez który proces odzyskiwania będzie czekał na rozpoczęcie, niezależnie od liczby węzłów przyłączonych do klastra.

gateway.recover_ after_nodes
gateway.recover_after_master_nodes
gateway.recover_after_data_nodes

HTTP

Ten moduł zarządza komunikacją między klientem HTTP a interfejsami API Elasticsearch. Ten moduł można wyłączyć, zmieniając wartość http.enabled na false.

Poniżej przedstawiono ustawienia (skonfigurowane w elasticsearch.yml) do sterowania tym modułem -

S.Nr Ustawienie i opis
1

http.port

To jest port dostępu do Elasticsearch i ma zakres od 9200-9300.

2

http.publish_port

Ten port jest przeznaczony dla klientów http i jest również przydatny w przypadku firewalla.

3

http.bind_host

To jest adres hosta dla usługi http.

4

http.publish_host

To jest adres hosta dla klienta http.

5

http.max_content_length

To jest maksymalny rozmiar treści w żądaniu http. Jego domyślna wartość to 100 MB.

6

http.max_initial_line_length

To jest maksymalny rozmiar adresu URL, a jego domyślna wartość to 4kb.

7

http.max_header_size

To jest maksymalny rozmiar nagłówka http, a jego domyślna wartość to 8kb.

8

http.compression

Włącza lub wyłącza obsługę kompresji, a jej domyślną wartością jest false.

9

http.pipelinig

To włącza lub wyłącza potokowanie HTTP.

10

http.pipelining.max_events

Ogranicza to liczbę zdarzeń do kolejkowania przed zamknięciem żądania HTTP.

Indeksy

Ten moduł przechowuje ustawienia, które są ustawiane globalnie dla każdego indeksu. Poniższe ustawienia dotyczą głównie wykorzystania pamięci -

Wyłącznik obwodu

Służy do zapobiegania powodowaniu przez operację błędu OutOfMemroyError. To ustawienie ogranicza głównie rozmiar sterty maszyny JVM. Na przykład ustawienie indices.breaker.total.limit, które domyślnie wynosi 70% sterty maszyny JVM.

Pamięć podręczna danych pola

Jest to używane głównie podczas agregacji na polu. Zaleca się mieć wystarczającą ilość pamięci, aby ją przydzielić. Ilość pamięci używanej na bufor danych pola można kontrolować za pomocą ustawienia indices.fielddata.cache.size.

Pamięć podręczna zapytań węzła

Ta pamięć jest używana do buforowania wyników zapytania. Ta pamięć podręczna korzysta z zasad eksmisji według najmniejszych czasów użytkowania (LRU). Ustawienie Indices.queries.cahce.size kontroluje wielkość pamięci podręcznej.

Bufor indeksujący

Ten bufor przechowuje nowo utworzone dokumenty w indeksie i opróżnia je, gdy bufor jest pełny. Ustawienie podobne do indices.memory.index_buffer_size kontroluje ilość sterty przydzielonej dla tego bufora.

Shard Request Cache

Ta pamięć podręczna służy do przechowywania lokalnych danych wyszukiwania dla każdego fragmentu. Pamięć podręczną można włączyć podczas tworzenia indeksu lub wyłączyć, wysyłając parametr adresu URL.

Disable cache - ?request_cache = true
Enable cache "index.requests.cache.enable": true

Odzyskiwanie indeksów

Kontroluje zasoby podczas procesu odzyskiwania. Poniżej przedstawiono ustawienia -

Oprawa Domyślna wartość
indices.recovery.concurrent_streams 3
indices.recovery.concurrent_small_file_streams 2
indices.recovery.file_chunk_size 512kb
indices.recovery.translog_ops 1000
indices.recovery.translog_size 512kb
indices.recovery.compress prawdziwe
indices.recovery.max_bytes_per_sec 40mb

Interwał TTL

Przedział czasu życia (TTL) określa czas, po którym dokument zostaje usunięty. Poniżej przedstawiono dynamiczne ustawienia kontrolowania tego procesu -

Oprawa Domyślna wartość
indices.ttl.interval 60s
indices.ttl.bulk_size 1000

Węzeł

Każdy węzeł może być węzłem danych lub nie. Możesz zmienić tę właściwość, zmieniającnode.dataoprawa. Ustawienie wartości jakofalse definiuje, że węzeł nie jest węzłem danych.