Elasticsearch - podstawowe pojęcia

Elasticsearch to serwer wyszukiwania oparty na Apache Lucene. Został opracowany przez Shay Banon i opublikowany w 2010 roku. Obecnie jest obsługiwany przez Elasticsearch BV. Jego najnowsza wersja to 7.0.0.

Elasticsearch jest rozproszonym w czasie rzeczywistym mechanizmem wyszukiwania pełnotekstowego i analizą typu open source. Jest dostępny z interfejsu usługi sieciowej RESTful i wykorzystuje do przechowywania danych dokumenty bez schematu JSON (JavaScript Object Notation). Jest zbudowany na języku programowania Java, dzięki czemu Elasticsearch może działać na różnych platformach. Umożliwia użytkownikom eksplorowanie bardzo dużej ilości danych z bardzo dużą prędkością.

Główne cechy

Ogólne cechy Elasticsearch są następujące -

  • Elasticsearch jest skalowalne do petabajtów danych strukturalnych i nieustrukturyzowanych.

  • Elasticsearch może zastąpić magazyny dokumentów, takie jak MongoDB i RavenDB.

  • Elasticsearch używa denormalizacji, aby poprawić wydajność wyszukiwania.

  • Elasticsearch jest jedną z popularnych wyszukiwarek dla przedsiębiorstw i jest obecnie używana przez wiele dużych organizacji, takich jak Wikipedia, The Guardian, StackOverflow, GitHub itp.

  • Elasticsearch to oprogramowanie typu open source, dostępne na licencji Apache w wersji 2.0.

Kluczowe idee

Kluczowe koncepcje Elasticsearch są następujące -

Węzeł

Odnosi się do jednej działającej instancji Elasticsearch. Pojedynczy serwer fizyczny i wirtualny obsługuje wiele węzłów w zależności od możliwości ich zasobów fizycznych, takich jak pamięć RAM, pamięć masowa i moc obliczeniowa.

Grupa

Jest to zbiór co najmniej jednego węzła. Cluster zapewnia zbiorcze indeksowanie i wyszukiwanie całych danych we wszystkich węzłach.

Indeks

Jest to zbiór różnego rodzaju dokumentów i ich właściwości. Indeks używa również koncepcji odłamków, aby poprawić wydajność. Na przykład zestaw dokumentów zawiera dane aplikacji sieci społecznościowej.

Dokument

Jest to zbiór pól w określony sposób zdefiniowany w formacie JSON. Każdy dokument należy do typu i znajduje się w indeksie. Każdy dokument jest powiązany z unikalnym identyfikatorem zwanym UID.

Czerep

Indeksy są podzielone poziomo na fragmenty. Oznacza to, że każdy fragment zawiera wszystkie właściwości dokumentu, ale zawiera mniejszą liczbę obiektów JSON niż index. Separacja pozioma sprawia, że ​​shard jest niezależnym węzłem, który można przechowywać w dowolnym węźle. Fragment podstawowy to oryginalna pozioma część indeksu, a następnie te fragmenty podstawowe są replikowane do fragmentów replik.

Repliki

Elasticsearch umożliwia użytkownikowi tworzenie replik ich indeksów i fragmentów. Replikacja nie tylko pomaga w zwiększeniu dostępności danych w przypadku awarii, ale także poprawia wydajność wyszukiwania poprzez przeprowadzenie równoległej operacji wyszukiwania w tych replikach.

Zalety

  • Elasticsearch jest rozwijany w Javie, dzięki czemu jest kompatybilny z prawie każdą platformą.

  • Elasticsearch działa w czasie rzeczywistym, innymi słowy, po jednej sekundzie dodany dokument można przeszukiwać w tym silniku

  • Elasticsearch jest dystrybuowany, co ułatwia skalowanie i integrację w każdej dużej organizacji.

  • Tworzenie pełnych kopii zapasowych jest łatwe dzięki zastosowaniu koncepcji bramy, która jest obecna w Elasticsearch.

  • Obsługa wielu dzierżawców w Elasticsearch jest bardzo łatwa w porównaniu z Apache Solr.

  • Elasticsearch używa obiektów JSON jako odpowiedzi, co umożliwia wywołanie serwera Elasticsearch z dużą liczbą różnych języków programowania.

  • Elasticsearch obsługuje prawie każdy typ dokumentów z wyjątkiem tych, które nie obsługują renderowania tekstu.

Niedogodności

  • Elasticsearch nie posiada wsparcia dla wielu języków w zakresie obsługi żądań i odpowiedzi (możliwe tylko w JSON) w przeciwieństwie do Apache Solr, gdzie jest to możliwe w formatach CSV, XML i JSON.

  • Czasami Elasticsearch ma problem z sytuacjami podzielonego mózgu.

Porównanie między Elasticsearch i RDBMS

W Elasticsearch indeks jest podobny do tabel w RDBMS (Relation Database Management System). Każda tabela to zbiór wierszy, tak jak każdy indeks jest zbiorem dokumentów w Elasticsearch.

Poniższa tabela przedstawia bezpośrednie porównanie tych terminów -

Elasticsearch RDBMS
Grupa Baza danych
Czerep Czerep
Indeks Stół
Pole Kolumna
Dokument Rząd