Pomysł stojący za Elastic Stack i Elasticsearch

(10 kwietnia 2020 r. )

Krótkie wprowadzenie do Elasticsearch i ELK Stack. Dlaczego co i jak.

ELK https : //aasconsultants.files.wordpress.com/2019/03/elk.png

Historia

Elastyczny NV to firma założona w 2012 roku w Amsterdamie, Shay Banon był założycielem Elasticsearch. Jego pierwsza iteracja nosiła nazwę Compass. Drugim był Elasticsearch (z Apache Lucene pod maską). Stworzył Elasticsearch z otwartym kodem źródłowym, stworzył kanał IRC #elasticsearch i czekał na pojawienie się użytkowników. Odpowiedź była imponująca. Użytkownicy przyjęli to naturalnie i łatwo. Adopcja przeszła przez dach, zaczęła się formować społeczność, a ludzie to zauważyli – a mianowicie Steven Schuurman, Uri Boness i Simon Willnauer. Razem założyli firmę wyszukującą.

Co to jest Elastic Stack?

Elastic Stack jest również znany jako ELK stack. Zasadniczo zawiera trzy projekty open source.

  1. Elastyczne wyszukiwanie – wyszukiwarka i wyszukiwarka .
  2. Logstash – potok przetwarzania danych.
  3. Kibana – Pulpit do wizualizacji danych.

Wszystkie te trzy elementy mają swoje znaczenie i łącząc te trzy Otrzymasz analizę i dane analityczne.

Dlaczego jest to potrzebne?

Jak wynika z ankiety, Facebook generuje codziennie 4 petabajty danych, tj. 40 milionów GB . Dane, teraz to świat danych. Potrzebujemy więc systemu, który analizuje nasze dane.

Czekaj !! Co to znaczy? Analizuj.

Należy zrozumieć dwa terminy.

  1. Analiza – W części poświęconej analizie uzyskasz wyniki z wcześniejszych danych lub istniejących danych, które posiadasz.
  2. Analytics – Jeśli chcesz przewidzieć wymagania użytkowników, potrzebujesz wizualizacji opartej na wykresach, aby uzyskać lepszą przejrzystość biznesową, a także chcesz zrozumieć wzorce danych.

Te dwa najważniejsze narzędzia do każda firma. Możesz to osiągnąć, używając danych . Z pomocą tych dwóch możesz rozwinąć swoją firmę i uzyskać przejrzyste informacje biznesowe.

Jak to zrobić? Ponieważ analiza tak dużych danych w krótszym czasie nie jest łatwym zadaniem.

Wyzwania i rozwiązania.

Co się dzieje w bardzo duże firmy otrzymujesz dane z różnych miejsc w różnych formatach. Może to być JSON lub XML. Potrzebujemy więc jednego mechanizmu, aby uzyskać całe dane w jednym miejscu, a także w jednym formacie. W tym celu używamy Logstash .

Teraz, gdy otrzymamy dane, musimy je uporządkować systematyczne zamówienie, dzięki czemu możemy bardzo łatwo ocenić rzeczy. Chcemy również przeanalizować dane, w takim przypadku Najpierw bardzo szybko przejrzyj dane. Do tego mamy Elasticsearch. Elasticsearch jest rozwijany w Javie i udostępniany jako open-source na warunkach Apache License .

Teraz, po ukończeniu tego, potrzebujemy platformy wizualizacyjnej, na której możemy pokazać naszą analizę danych. Pojawia się Kibana . Tak działał cały stos Elastic. Dla lepszego Analizy biznesowe .

Przetwarzaj https://hackernoon.com/hn-images/1*Tvmj3XsqH4hJLvXnfm6sZQ.png

Konfiguracja Elasticsearch, Logstash i Kibana

Najpierw pobierzmy trzy oprogramowanie open source z odpowiednich linków [ flexiblesearch ], [ logstash ] i [ kibana ]. Rozpakuj pliki i umieść wszystkie trzy w folderze projektu.

Zaczynajmy.

Krok 1 – Skonfiguruj Kibana i Elasticsearch w systemie lokalnym. Uruchamiamy Kibanę za pomocą następującego polecenia w folderze bin Kibana.

bin\kibana

Podobnie, Elasticsearch jest skonfigurowane w następujący sposób:

bin\elasticsearch

Teraz w dwóch oddzielnych terminalach możemy zobaczyć oba działające moduły.Aby sprawdzić, czy usługi działają jako otwarte localhost: 5621 dla Kibana i localhost: 9600 dla Elasticsearch.

Tutaj jesteśmy gotowi do skonfigurowania elastycznego stosu. Teraz przejdź do localhost: 5621 i otwórz narzędzia programistyczne tutaj, w konsoli. Jest to miejsce, w którym możesz pisać zapytania Elasticsearch.

Konsola Kibana

Ponieważ tym razem porozmawiamy więcej o Elasticsearch. Teraz zobaczymy, jak dokładnie działa Elasticsearch.

Elastyczne wyszukiwanie

Praca z elastycznym wyszukiwaniem

Przed jakąkolwiek operacją musimy zindeksować nasze dane. Po zaindeksowaniu w Elasticsearch użytkownicy mogą uruchamiać złożone zapytania względem swoich danych i używać agregacji do pobierania złożonych podsumowań swoich danych. Elasticsearch przechowuje dane jako dokumenty JSON i używa Datastrucre zwanego odwrócony indeks , który został zaprojektowany, aby umożliwić bardzo szybkie wyszukiwanie pełnotekstowe . Odwrócony indeks zawiera listę wszystkich unikalnych słów występujących w jakimkolwiek dokumencie i identyfikuje wszystkie dokumenty, w których każde słowo występuje.

Dla lepszego zrozumienia podziel Elasticsearch na kilka tematów.

  1. Zarządzanie dokumentami
  2. Mapowania
  3. Analiza
  4. Metodologia wyszukiwania
  5. Agregacja i filtry

Najważniejszym aspektem Elasticsearch jest zrozumienie jego architektury.

Klaster

W Elasticserach przechowujemy dane w węzłach, w maszynie może być n liczby węzłów. Każdy węzeł jest powiązany z klastrem. Zatem klaster to zbiór węzłów .

Dokumenty

Przechowujesz swoje dane jako dokumenty , które są obiektami JSON. Jak więc te dane zorganizowały się w klastrze? Odpowiedź to indeksy .

W świecie relacyjnych baz danych dokumenty można porównać do wiersza w tabeli.

Indeks

Elasticsearch Indeksy to logiczne partycje dokumentów i można porównać do bazy danych w świecie relacyjnych baz danych.

Typy

Każdy indeks ma co najmniej jeden typ odwzorowania, który jest używany do dzielenia dokumentów na grupę logiczną. To może można porównać z tabelą w świecie relacyjnych baz danych.

Każdy dokument jest przechowywany jako indeks . Indeks, o którym można powiedzieć, to zbiór dokumentów. To ma podobne cechy, na przykład dział będzie miał indeks A, a pracownicy mają indeks B, czyli są logicznie powiązani.

Sharding

  1. Sharding to tylko sposób na podzielenie indeksu na mniejsze fragmenty.
  2. Każdy fragment jest znany jako odłamek.
  3. Sharding jest wykonywany na poziomie indeksu.

Fragment jest jak fragment indeks. Dla skalowalności. Dzięki shardingowi możesz przechowywać miliardy dokumentów w jednym indeksie. Istnieją również repliki, ale na razie wystarczy nam zacząć i zrozumieć Elasticsearch.

Przejdźmy więc dalej w kierunku budowania i wyszukiwania.

1. Zarządzanie dokumentami

Wcześniej pobierz menedżera pakietów Elasticserach.

npm i elasticsearch

Krok -1- Połącz swoją aplikację z Elasticsearch, wykonując następujące czynności.

Połączenie

Krok 2 – Utwórz indeks np. Tworzymy indeks jako gov.

Utwórz indeks

Krok-3 – Teraz dodamy dokumenty do index gov, aw index gov istnieje typ zwany constituencies .

Istnieje baza danych o nazwie gov, a tabela zawiera okręgi wyborcze.

Dodawanie dokumentów

2. Odwzorowania

Odwzorowanie to proces definiowania dokumentu i jego pól. Podobnie jak w przypadku definiowania schematu tabeli w RDBMS.

Krok-4 – Teraz zdefiniujemy mapowania do indeksowych elementów składowych typu gov.

Mapowania

3. Analiza

Analiza tekstu to proces przekształcania tekstu bez struktury , na przykład treść wiadomości e-mail lub opis produktu w ustrukturyzowanym formacie zoptymalizowanym pod kątem wyszukiwania.

Elasticsearch przeprowadza analizę tekstu podczas indeksowania lub wyszukiwania

text pola . Które zdefiniowaliśmy w mapowaniach. Jest to kluczowy czynnik dla wyszukiwarki.

Domyślnie Elasticsearch używa analizatora

standard dla całej analizy tekstu. Analizator standard zapewnia natychmiastową obsługę większości języków naturalnych i przypadków użycia . Jeśli zdecydujesz się użyć analizatora standard w takiej postaci, w jakiej jest, nie jest wymagana dalsza konfiguracja. Możesz także stworzyć swój własny, niestandardowy analizator.

4. Metodologia wyszukiwania

Istnieją różne typy zapytań, które można zastosować do Elasticsearch. Dzięki temu uzyskasz odpowiednie wyniki. Tutaj podam podstawowy przykład zapytania.

Najprostsze zapytanie, które pasuje do wszystkich dokumentów.

Zapytanie

Zapytania

Zapytania złożone zawijają inne zapytania złożone lub liście, aby połączyć ich wyniki i oceny, zmienić ich zachowanie lub przełączyć się z zapytania na kontekst filtru.

Domyślne zapytanie do łączenia wielu liści lub złożonych klauzul zapytania, na przykład must, should, lub filter. Punkty must i should mają połączone wyniki.

Pełny tekst zapytania umożliwiają przeszukiwanie przeanalizowanych pól tekstowych , takich jak treść wiadomości e-mail. Ciąg zapytania jest przetwarzany przy użyciu tego samego analizatora, który został zastosowany do pola podczas indeksowania. Przeanalizuje Twoje dane wejściowe. Jeśli podane dane wejściowe nie są dokładne, ale nadal, otrzymasz wynik.

Wykonywanie pełnych złączeń w stylu SQL w systemie rozproszonym, takim jak Elasticsearch, jest zbyt kosztowne. Zamiast tego Elasticsearch oferuje dwie formy łączenia, które są zaprojektowane do skalowania w poziomie.

1.

nested zapytanie

2.

has\_child i

has\_parent

Ta grupa zawiera zapytania, które nie pasują do innych grup. Okazało się, że dokumenty o podobnym charakterze, przypięte zapytania również jest o wiele więcej zapoznaj się z jego dokumentacją .

Możesz użyć zapytania na poziomie terminów w celu znalezienia dokumentów na podstawie dokładności wartości w danych strukturalnych. Przykłady danych strukturalnych obejmują zakresy dat, adresy IP, ceny lub identyfikatory produktów.

W przeciwieństwie do zapytań pełnotekstowych, zapytania na poziomie hasła nie analizować wyszukiwanych haseł. Zamiast tego zapytania na poziomie terminu odpowiadają dokładnie terminom przechowywanym w polu. Znajdzie dokładne dopasowanie danych wejściowych, przy czym, tak jak w przypadku pierwszego pełnotekstowego, zostanie przeanalizowane, a następnie przeszukane, dzięki czemu będzie duża różnica między zapytaniem na poziomie terminu a zapytaniem pełnotekstowym.

5. Agregacja i filtry

W kontekście filtra klauzula zapytania odpowiada na pytanie „ Czy ten dokument pasuje do tej klauzuli zapytania? Odpowiedź jest prosta: Tak lub Nie – nie są obliczane żadne wyniki. Kontekst filtru jest najczęściej używany do filtrowania uporządkowanych danych, np.

  • Czy to timestamp mieści się w zakresie z 2015 r. do 2016 roku?
  • Czy pole status jest ustawione na "published"?

Często używane filtry będą automatycznie zapisywane w pamięci podręcznej przez Elasticsearch, aby przyspieszyć działanie.

Kontekst filtru działa zawsze, gdy klauzula zapytania jest przekazywana do , taki jak filter lub must\_not parametry w

bool zapytanie, parametr filter w zapytaniu

constant\_score lub agregacja

filter .

W przypadku agregacji jest bardziej jak w RDBMS, znajdziesz średnią, sumę i wiele informacji o danych przy użyciu złożonych zapytań.

Podsumowanie

  1. Co to jest Elastic Stack.
  2. Jak działa ELK.
  3. Co to jest Elasticsearch i jak działa.
  4. Kilka podstawowych zapytań na ten temat.

Co dalej !!

Ponieważ jest to ogromny temat do omówienia. ale próbowałem przedstawić krótkie wprowadzenie na temat ELK i Elasticsearch. Następnie zbudujemy naszą własną wyszukiwarkę, taką jak aplikacja, przy użyciu Elasticsearch, gdzie omówię również jej część dotyczącą kodowania. Jak zachować strukturę plików i inne rzeczy.

Podsumowanie

Elastyczny stos to bardzo ważna technika, której należy się nauczyć. Zastosujesz to w każdym ze swoich projektów, a Stos ELK jest najczęściej używany jako narzędzie do analizy dzienników . Jego popularność polega na tym, że zapewnia niezawodny i stosunkowo skalowalny sposób agregowania danych z wielu źródeł, wciąż pozostaje Wiele rzeczy, ale po tym można zacząć od Elasticsearch. Zalecam zapoznanie się z jego dokumentacją . Jeśli masz jakieś pytania lub znajdziesz coś złego w treści, zostaw komentarz.

Dzięki 🙂