NOTATKA: Aby przeprowadzić zmiany w indeksie, upewnij się, że masz uprawnienia zarządzania w indeksie docelowym.
Podstawowe użycie
Aby zmodyfikować typ pola, wyślij żądanie PUT do interfejsu API „Mapping”, a następnie organu żądania. Ciało żądania zawiera parametr właściwości i mapowanie pola docelowego. Podczas tworzenia nowego pola upewnij się, że podajesz nazwę pola, typu i parametrów mapowania.
Na przykład następujące żądanie zmienia typ pola z liczby całkowitej na długie.
PUT /MY-INDEX /_MAPPAPPIĘPo pomyślnym zakończeniu należy postrzegać dane wyjściowe jako:
Metoda ponownego indeksowania
W większości przypadków ElasticSearch uniemożliwi aktualizację typu pola istniejącego indeksu. Może to prowadzić do tego, że obecne dane stają się nieprawidłowe i spowodować błędy w indeksie.
Jeśli nadal chcesz zaktualizować rodzaj istniejącego pola, możesz to zrobić w kilku prostych krokach.
Korzystanie z tej metody pozwala skrócić minimalne przestoje dla swojego indeksu.
Tworzenie starego indeksu
Zacznijmy od utworzenia indeksu z niepoprawnym typem pola.
Put /Change-MeW powyższym przykładzie mamy prosty indeks z dwoma dziedzinami: id i nazwa użytkownika. Typy pola to odpowiednio liczba całkowita i tekst.
Załóżmy, że pole zawiera dane, jak pokazano w następującym zapytaniu:
Post /Change-Me /_doc
Dwa powyższe zapytania utworzą dokument z danymi podanymi w ciele żądania.
Upewnij się, że dane istnieją:
Get /Change-Me /_search?ładnyPowinniśmy zobaczyć dwie rekordy, jak pokazano:
Utwórz nowy indeks
Powiedzmy, że chcemy zmienić pole identyfikatora z całkowitej na słowo kluczowe. Zaczniemy od utworzenia nowego indeksu z typem jako słów kluczowych.
Put /Change-Me-ReindexW powyższym żądaniu tworzymy nowy indeks i ustawiamy typ identyfikatora na słowo kluczowe.
Ponownie indeks stare dane
Następnym krokiem jest ponowne indeksowanie danych ze starego indeksu do nowego za pomocą API reindex. Prośba o to jest poniżej:
Post /_reindexPowyższe żądanie skopiuje dokumenty ze starego indeksu do nowego, w którym typ pola zmienia się z całkowitej na słowo kluczowe.
Wyjście z powyższego zapytania:
Usuń stary indeks
Teraz, gdy mamy zaktualizowany indeks z prawidłowym mapowaniem, nadszedł czas, aby usunąć stary indeks. Możemy to zrobić, wysyłając żądanie usunięcia do indeksu jako:
Usuń /Change-MePo pomyślnym usunięciu należy postrzegać wyjście jako:
Utwórz alias indeksu
Jeśli miałeś aplikacje za pomocą starego indeksu, mogą przestać działać, ponieważ już nie istnieje.
Możemy to rozwiązać, tworząc alias dla nowego indeksu o nazwie starego indeksu.
Put/Change-Me-Reindex/_alias/Change-MePowyższe żądanie powinno utworzyć alias dla nowego indeksu.
Wniosek
W tym przewodniku odkryłeś, jak zmienić rodzaj istniejącego pola w indeksie ElasticSearch.