Dlaczego typy mapowania ES zostały usunięte w ES V6.0?

Dlaczego typy mapowania ES zostały usunięte w ES V6.0?

Jakie są typy mapowania?

W ElasticSearch każdy dokument należy do indeksu i typu. Indeks można uznać za bazę danych, podczas gdy typ można postrzegać jako tabelę w porównaniu z relacyjną bazą danych. Typ mapowania był logiczną partycją obiektu z innymi obiektami, które należały do ​​innych typów mapowania w tym samym indeksie.

Każdy typ mapowania ma swoje własne pola. Na przykład rodzaj użytkownik może mieć następujące pola:


„ID”: 123,
„Nazwa”: „Shubham”,
„Strona internetowa”: 1

Kolejny typ mapowania w tym samym indeksie strona internetowa może mieć następujące pola, które są zupełnie inne niż użytkownik typ:


„ID”: 1,
„Tytuł”: „Linuxhint”,
„Link”: „https: // Linuxhint.com/"

Podczas wyszukiwania dokumentu w indeksie wyszukiwanie mogło być ograniczone do jednego dokumentu, określając pojedyncze pole jako:

Uzyskaj IDX_name/Użytkownik, strona internetowa/_search

"zapytanie":
"mecz":
„ID”: 1


_typ pole dokumentów zostało połączone z jego _ID do wygenerowania _UID pole, więc dokumenty z tym samym _ID może istnieć w jednym indeksie.

Przeczytaj samouczek Elasticsearch dla początkujących w celu głębszego zrozumienia architektury Elasticsearch i zacznij od niej z instalacją Elasticsearch na Ubuntu.

Dlaczego są usuwane typy mapowania?

Podobnie jak to, co powiedzieliśmy powyżej, wyjaśniając, w jaki sposób indeks i typy były podobne do bazy danych i tabeli w relacyjnej bazie danych, zespół ElasticSearch pomyślał to samo, ale nie było tak, ponieważ silnik Lucene nie jest zgodny z tą samą analogią. Wynika to z następujących powodów:

  • W relacyjnej bazie danych tabele są od siebie niezależne i nazwa kolumn, nawet jeśli są takie same, nie mają między nimi żadnych związku. Nie dotyczy to pól w typach mapowania, jak w ES, Pola o tej samej nazwie są traktowane jako to samo pole silnikowe Lucene.
  • W powyższym przykładzie pole _ID W użytkownik Typ i strona internetowa Typ jest przechowywany w tym samym polu i powinien mieć dokładnie ten sam typ, co może prowadzić do frustracji i zamieszania.
  • Przechowywanie jednostek bez pól wspólnych zatrzymuje Lucene do skutecznego kompresji dokumentów.

Alternatywy dla typów mapowania

Chociaż podjęto decyzję, nadal musimy oddzielić różne typy danych. Teraz pierwszą alternatywą jest oddzielne dokumenty we własnym indeksie który ma dwie zalety:

  • Teraz, gdy dane są powszechne w każdym indeksie, Lucene może bardzo łatwo zastosować własne techniki kompresji danych.
  • Teraz, gdy wszystkie dokumenty w indeksie mają takie same pola, zdolności wyszukiwania pełnotekstowego rosną fenomenalnie wraz ze wzrostem punktacji każdego dokumentu.

Inną alternatywą dla oddzielenia danych jest utrzymanie zwyczaju _typ pole w każdym dokumencie, które wstawiamy, na przykład:

Umieść db_name/doc/123

„Typ”: „Użytkownik”,
„ID”: 123,
„Nazwa”: „Shubham”,
„Strona internetowa”: 1

Umieść db_name/doc/stronę internetową

„Typ”: „Strona internetowa”,
„ID”: 1,
„Tytuł”: „Linuxhint”,
„Link”: „https: // Linuxhint.com/"

To doskonałe użycie, jeśli szukasz kompletnego niestandardowego rozwiązania.

Harmonogram usuwania typów mapowania

Ponieważ usuwanie typów mapowania jest dużą zmianą, zespół ES powoli wykonuje ten proces. Oto harmonogram wdrożenia wyodrębnionego z elastycznych.współ:

  • Elasticsearch 7.X
    • typ Parametr w adresach URL jest opcjonalny. Na przykład indeksowanie dokumentu nie wymaga już typu dokumentu.
    • _domyślny_ Typ mapowania jest usuwany.
  • ElasticSearch 8.X
    • typ Parametr nie jest już obsługiwany w adresach URL.
    • Nazwa_type_type Parametr domyślnie FAŁSZ.
  • ElasticSearch 9.X
    • Nazwa_type_type Parametr jest usuwany.

Wniosek

W tej lekcji spojrzeliśmy na to, dlaczego typy mapowania elasticsearch zostały usunięte i będą całkowicie nieobsługiwane w nadchodzących wersjach.