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 |
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.