ElasticSearch Zmień nazwę indeksu

ElasticSearch Zmień nazwę indeksu

Indeks elasticsearch lub indeksy to (są) strukturą danych zawierających mapowania dla różnych dokumentów. W relacyjnej bazie danych indeks może odnosić się do określonej bazy danych.

Klaster ElasticSearch zawiera kilka wskaźników, w tym wiele rodzajów, które następnie przechowują dokumenty.

Poniższe mogą reprezentować relację Elasticsearch z relacyjną bazą danych.

  • PostgreSQL -> baza danych -> Tabela -> wiersz/kolumna
  • ElasticSearch -> indeks -> Typ -> Dokument

W tym przewodniku omówimy różne metody zmiany nazwy istniejącego indeksu ElasticSearch.

Metoda 1: Reindexing

Pierwszą metodą, której możemy użyć podczas zmiany nazwy indeksu, jest API Reindexing. Ten interfejs API umożliwia kopiowanie dokumentów z indeksu źródłowego do określonego indeksu docelowego.

Jednak interfejs API Reindex nie kopiuje konfiguracji indeksu źródłowego do miejsca docelowego. Dlatego musimy skonfigurować indeks docelowy i zastosować konfigurację indeksu źródłowego przed wywołaniem Reindex.

Możemy zaimplementować pełną operację ponownego indeksu, wykonując kroki opisane poniżej:

  1. Utwórz nowy (źródło) indeks ElasticSearch
  2. Pobierz konfigurację indeksu i zapisz go.
  3. Utwórz nowy (miejsce docelowe) z konfiguracją indeksu źródłowego.
  4. Zadzwoń do interfejsu API Reindex od źródła do miejsca docelowego
  5. Usuń indeks źródła.

Jeśli masz istniejący indeks ElasticSearch, skakaj do kroku 2

NOTATKA: W tym przewodniku zapewnimy wszystkie prośby o elasticsearch o curl.

Krok 1: Utwórz nowy indeks
Utwórzmy indeks, który będzie działał jako źródło. Dla uproszczenia użyjemy prostej konfiguracji indeksu z większością domyślnych parametrów.

Będziemy złożyć wniosek do punktu końcowego HTTP ElasticSearch HTTP.

Przykładowe żądanie utworzenia indeksu „indeks testowy” znajduje się poniżej:

curl -xput "http: // localhost: 9200/test -index" -h 'content -Type: Application/Json' -d '

„Ustawienia”:
„Indeks”:
„Number_of_shards”: 3,
„Number_of_replicas”: 2

,
„Mapowania”:
"nieruchomości":
„Field1”: „typ”: „tekst”


'

Następnym krokiem jest dodanie danych do utworzonego indeksu. Domyślnie indeks nie zawiera żadnych dokumentów.

curl -xget http: // localhost: 9200/_cat/indices/test -index \?v

Aby dodać dane do indeksu, uruchom żądanie jako:

Powyższe żądanie powinno utworzyć dokument w indeksie indeksu testu.

Możemy zweryfikować dokument istnieje za pomocą żądania GET do punktu końcowego indeksu.

curl -xget "http: // locahost: 9200/test-index/_search" -h 'content -Type: Application/Json' -d '

„Zapytanie”: „Match_All”:
'
'

Przykładem wyjściowym jest Ans:

Krok 2: Pobierz konfigurację źródła
Następnym krokiem przed wykonaniem operacji Reindex jest skopiowanie konfiguracji indeksu źródłowego.

Zaczniemy od uzyskania ustawienia indeksu. Aby to zrobić, wysyłamy żądanie HTTP do interfejsu API _setting.

Ustawienia = $ (curl -xget "https: // localhost: 9200/test -index/_settings")

Zapisujemy dane wyjściowe w zmiennej, którą możemy zweryfikować za pomocą polecenia:

Echo $ Ustawienia | JQ

Ponieważ wyjście jest w formacie JSON, przekazujemy go procesorowi JSON, takiemu jak JQ. Przykładem jest to, jak pokazano:

Następnym krokiem jest uzyskanie mapowania indeksu. W takim przypadku wyślemy żądanie GET do punktu końcowego _Mapping jako:

Mapping = $ (curl -xget "https: // localhost: 9200/test -index/_mapping")

Sprawdź, czy wyjście jest zapisywane na zmiennej:

Echo $ mapowanie | JQ

Wyjście jest jak pokazane:

Następnie połącz dane wyjściowe zarówno ustawienia $, jak i $ mapowanie do jednego formatu JSON.

Poniżej znajduje się skrócony zrzut ekranu obu połączonych wyjść (konfiguracja.JSON).

Krok 3: Utwórz nowy indeks
Nadszedł czas, aby utworzyć nowy indeks z konfiguracją zapisu. Upewnij się, że konfiguracja nie zawiera żadnych błędów.

Uruchom polecenie jako:

curl -xput "http: // localhost: 9200/przemianowanie -index" -h 'content -type: application/json' -d Config.JSON '

Poniżej znajduje się zawartość w konfiguracji, plik JSON używany w tym samouczku.

Po udanym stworzeniu powinieneś zobaczyć potwierdzone: prawdziwe, jak pokazano:

Krok 4: Reindex
Teraz, gdy mamy przemianowany indeks podobny do indeksu źródłowego, możemy kopiować dane z źródła na miejsce docelowe za pomocą API Reindex.

curl -xpost "http: // localhost: 9200/_reindex" -h 'content -type: application/json' -d '

"źródło":
„indeks”: „test-indeks”
,
„dest”:
„indeks”: „przemianowany na indeks”

'

Po dokonaniu żądania Reindex ElasticSearch skopiuje dane z określonego indeksu źródłowego do indeksu docelowego.

Oto przykład wyjścia:

Krok 5: Usuń wskaźnik źródła
Nie ma sensu mieć dwóch wskaźników o podobnej konfiguracji i danych. Dlatego możemy upuścić indeks źródła:

curl -xDelete http: // localhost: 9200/test -index

„Uznany”: prawda

Metoda 2: API klonów

Drugim i najłatwiejszym sposobem zmiany nazwy i indeksu jest użycie interfejsu API klonów wprowadzonych w Elasticsearch w wersji 7.4 i powyżej.

Aby korzystać z interfejsu API klonów, musisz upewnić się, że indeks źródłowy jest tylko odczytu, a zdrowie klastra jest zielone.

Jak działa klonowanie
Klonowanie działa w następujący sposób:

  • Utwórz nowy indeks ElasticSearch. Nowy indeks powinien zawierać identyczne definicje jako stary indeks (indeks źródłowy).
  • Kolejnym krokiem jest wykonanie segmentu twardego łącza indeksu źródłowego do nowego indeksu ElasticSearch.
  • Po wykonaniu twardego łącza nowy indeks jest ponownie otwarty z definicjami i danymi starego indeksu.

Krok 1: Ustaw indeks źródłowy na tylko odczyt
Aby ustawić indeks źródłowy w tryb tylko do odczytu, używamy interfejsu API _Settings i przekazujemy informacje, jak pokazano na poniższym żądaniu:

curl -xput "http: // localhost: 9200/test-index/_settings" -h 'content -type: application/json' -d '

„Ustawienia”:
"indeks.Bloki.pisać prawdę

'

Krok 2: Indeks źródła klonu do celu
Aby sklonować indeks testowy do nowego indeksu o nazwie przemianowany na indeks, możemy uruchomić żądanie, jak pokazano:

curl -xpost „http: // localhost: 9200/test-indeks/_clone/przemianowany-indeks"

Zakładając, że następujące wymagania są prawdziwe, powinieneś mieć przemianowany wskaźnik indeksu źródłowego.

  1. Określony indeks docelowy nie może istnieć.
  2. Węzeł ma wystarczającą przestrzeń do przechowywania sklonowanego indeksu
  3. Wskaźnik źródła ma równą liczbę odłamków pierwotnych, jak określony wskaźnik docelowy.

Wniosek

W tym przewodniku omówiliśmy, jak zmienić nazwę indeksu ElasticSearch przy użyciu dwóch metod.

Dziękuję za przeczytanie!