Na początku było słowo… potem były dwa słowa, trzy, pierwsze zdanie, drugie zdanie i tak dalej. No a potem ktoś zapragnął w tym wszystkim wyszukiwać. Tak powstał Elasticsearch 🙂

Tak też zaczęła się przygoda firmy istniejącej dziś pod nazwą Elastic w budowanie czegoś co obecnie znamy jako Elastic Stack.

Zanim przejdziemy do dalszych zabaw z samym Elasticsearchem chciałbym w kilku słowach opowiedzieć co jeszcze znajduje się na tym stosie.

Co składa się na Elastic Stack?

To może po kolei.

Elasticsearch

Sercem całego stosu jest silnik wyszukiwania i analizowania danych Elasticsearch. Od niego wszystko się zaczęło. Początkowo firma Shaya Banona, twórcy projektu, nosiła nazwę Elasticsearch BV jednoznacznie wskazującą na ich jedyny wtedy produkt. W marcu 2015 roku zmieniła jednak nazwę na Elastic, żeby pokazać, że jej produkty wyszły już daleko poza samo wyszukiwanie.

Silnik został napisany w Javie i działa na jej maszynie wirtualnej. U jego podstaw leży biblioteka Apache Lucene. Tym czym szczyci się Elasticsearch jest szybkość (zaiste), skalowalność (równie łatwo jest go uruchomić na laptopie jak i na setkach serwerów), odporność na błędy i zapewnienie wysokiej dostępności oraz… elastyczność (stara się radzić sobie z każdym rodzajem przyjmowanych danych).

Przez te kilka lat istnienia Elasticsearch dorobił się imponującej liczby klientów wielu popularnych i mniej popularnych języków programowania. Część z nich jest wspierana przez firmę Elastic, ale lista tych utrzymywanych wyłącznie przez community robi jeszcze większe wrażenie.

Na tym zakończmy. W niniejszej serii to właśnie Elasticsearch jest głównym aktorem, więc informację na jego temat pojawią się jeszcze nie raz.

OK. W takim razie co takiego pojawiło się w stajni firmy, że ta postanowiła zmienić nazwę?

Logstash

Pierwszym z nowych produktów był Logstash (napisany po trochu w Ruby i Javie).

Logstash jest rurą 🙂 Rurą umożliwiającą konsumpcję danych z wielu źródeł jednocześnie, przetworzenie ich w dowolny sposób i wyplucie do swojego ulubionego składowiska. Jasne jest, że ulubionym składowiskiem w tym przypadku jest Elasticsearch, ale bynajmniej nie jedynym.

Listy możliwych źródeł wejścia, filtrowania jak i potencjalnych składowisk są niebywałe.

Cykl artykułów "Uczymy się Elasticsearch"

Ten wpis jest częścią cyklu, w którym staram się pokazać w jaki sposób możesz zbudować przyjazną dla użytkownika wyszukiwarkę, wykorzystując do tego celu potężny silnik wyszukiwania jakim jest Elasticsearch.

Do tej pory w ramach cyklu ukazały się następujące artykuły:

  1. instalacja, uruchomienie i pierwsze zapytanie
  2. kilka słów na temat Elastic Stack
  3. przydatne narzędzia
  4. indeks odwrócony Apache Lucene
  5. rodzaje pełnotekstowych zapytań
  6. trafność
  7. ...

Kibana

Drugim dodanym do stosu produktem, który pojawił się praktycznie jednocześnie z Logstashem, była Kibana. Ta dla odmiany została napisana w JavaScript.

Kibana jest „oknem na Elastic Stack”, jak ładnie określają to jej twórcy. Pozwala zarówno badać i wizualizować dane znajdujące się w Elasticsearchu, jak i zarządzać całym stosem.

Wynikami analiz można dzielić się z innymi w formie przyjaznych dashboardów lub po prostu wyeksportować je do PDF, czy CSV.

Część administracyjna z kolei przypadnie do gustu każdemu, kto woli zarządzać systemami w bardziej okienkowy sposób, bez konieczności robienia wszystkiego z poziomu linii komend.

Świetną sprawą dla programistów chcących analizować zapytania Elasticsearcha (w tym również nas w kolejnych artykułach) są narzędzia deweloperskie dostarczane w Kibanie. Nie tylko podpowiadają składnie zapytań, ale również pomagają je profilować. Trochę więcej na ten temat napiszę w kolejnym artykule.

ELK

Używając pierwszych liter trzech powyższych produktów twórcy utworzyli sobie przyjemny akronim ELK, który w języku angielskim oznacza jelenia kanadyjskiego. Stąd też ten jelonek na obrazku tytułowym. Od tego momentu, wszystkie trzy projekty, które świetnie razem współgrają, zaczęto nazywać ELK Stack.

Beats

W 2015 roku, w odpowiedzi na potrzeby użytkowników, twórcy stosu ELK wypuścili na rynek zbiór lekkich aplikacji mających za zadanie przechwytywać zdarzenia dokonujące się na plikach, metrykach, czy pakietach sieciowych i wysyłające informacje o nich do Logstasha lub Elasticsearcha. Nazwano je Beats, a napisano w języku Go.

Oprócz wypuszczenia kilku własnych beatsów świetnym ruchem ze strony ludzi z Elastica było udostępnienie prostego sposobu na tworzenie ich samodzielnie i dzielenie się nimi z innymi. Zaowocowało to powstaniem całkiem pokaźnej listy beatsów rozwijanych przez społeczność. Co najfajniejsze – cały czas powstają nowe.

ELKB?

I tu pojawił się problem pojawiło się wyzwanie. Jak zaktualizować akronim, żeby uwzględniał również Beatsy? Postanowiono nie brnąć dalej w dodawanie kolejnych literek, bo to nie było ani trochę skalowalne i dylemat powróciłby przy następnym produkcie. Postawiono więc na nazwę Elastic Stack.

Elastic Stack

Elastic Stack

Cała ta historia została ładnie zobrazowania na jednej ze stron firmy Elastic.

…i jeszcze trochę

Oprócz tych czterech produktów składających się na Elastic Stack firma oferuje również kilka dodatkowych.

X-Pack

Pierwszym z nich jest X-Pack umożliwiający rozszerzenie funkcjonalności Elasticsearcha, Logstasha i Kibany. Zawiera m.in. rozszerzenia wprowadzające autoryzację, monitorowanie, raportowanie, czy uczenie maszynowe.

Przez długi czas X-Pack był rozwiązaniem zamkniętym dostępnym w modelu subskrypcyjnym, ale od wersji 6.3 postanowiono się z nim otworzyć.

Elasticsearch Service

Poza tym firma Elastic zarabia na swoim stosie dostarczając go w modelu as a service. Jeżeli nie chcemy sami zajmować się utrzymaniem infrastruktury to możemy skorzystać z hostowanego na AWS-ie lub Google Cloud Platform Elasticsearcha i Kibany (rozszerzonych o dodatki z X-Packa).

Elastic Cloud Enterprise

Jeżeli z kolei chcielibyśmy uruchomić pakiet podobny do tego udostępnionego w Elastic Cloud, ale wolelibyśmy zainstalować go na własnych serwerach, czy we własnej chmurze prywatnej, to możemy skorzystać z wersji enterprise.

Elastic [App|Site] Search Service

Absolutną świeżynką są tu dwa serwisy, które zaledwie kilka dni temu weszły w fazę GA. Elastic App Search ServiceElastic Site Search Service, bo o nich mowa pozwalają na podłączenie Elasticsearcha do naszej strony, czy aplikacji internetowej praktycznie bez żadnej wiedzy na temat tego co dzieje się pod spodem.

Open Source

Najfajniejszym w tym wszystkim jest fakt, że cały Elastic Stack jest udostępniony na licencjach open source, a kod znajduje się na GitHubie i jeżeli tylko chcesz, to w każdej chwili możesz dopisać do niego coś swojego 😉

Jak już jesteśmy przy kodzie, to warto zwrócić uwagę na jedną rzecz – różnorodność użytych tutaj języków programowania. Wielokrotnie słyszymy o wykorzystywaniu odpowiednich narzędzi do konkretnych zadań, a w praktyce, w dużej części przypadków wychodzi tak, że klepiemy wszystko w tym co najlepiej znamy. Fajnie jest zobaczyć, że ktoś nie tylko mówi, ale również stosuje tę zasadę w praktyce.

Kto tego używa?

Elastic Stack przez swoje kilka lat istnienia został już solidnie sprawdzony w boju. Wystarczy spojrzeć na przypadki użycia na stronie Elastica lub na angielską Wikipedię. Nie będę tu nikogo wymieniał, ale na liście znajdują się takie firmy, które rozpozna nawet moja mama pomijająca cały „programistyczny bełkot” czytając mojego bloga 😉

The End

Miało być kilka słów, a ostatecznie wpis wyszedł dłuższy niż się tego spodziewałem, chociaż w sumie jest to niezbędne minimum, żeby orientować się o co chodzi w Elastic Stacku. Obstawiam, że jeszcze jeden lub dwa wpisy będą także w tematyce wprowadzającej, a później przejdziemy do praktyki.

Do przeczytania! 🙂

Bądź na bieżąco!

Podobają Ci się treści publikowane na moim blogu? Nie chcesz niczego pominąć? Zachęcam Cię do subskrybowania kanału RSS, polubienia fanpage na Facebooku, zapisania się na listę mailingową:



Uwaga! Jeżeli w ciągu 24-godzin od zapisania się na listę mailingową nie otrzymasz wybranego przez siebie prezentu to skontaktuj się ze mną.

Zgoda? Zapisując się do newslettera wyrażasz zgodę na przesyłanie Ci starannie wyselekcjonowanych informacji marketingowych. Dane są przechowywane w systemie MailChimp i nie są udostępniane nikomu więcej.

lub śledzenia mnie na Twitterze. Generalnie polecam wykonanie wszystkich tych czynności, bo często zdarza się tak, że daną treść wrzucam tylko w jedno miejsce. Zawsze możesz zrobić to na próbę, a jeśli Ci się nie spodoba – zrezygnować :)

Chcesz więcej? W takim razie zapraszam Cię do dołączenia do powiązanych grup na Facebooku, gdzie znajdziesz dodatkowe informacje na poruszane tutaj tematy, możesz podzielić się własnymi doświadczeniami i przemyśleniami, a przede wszystkim poznasz ludzi interesujących się tą samą tematyką co Ty.

W grupie Programista Na Swoim znajdziesz wiele doświadczonych osób chętnych do porozmawiania na tematy krążące wokół samozatrudnienia i prowadzenia programistycznej działalności gospodarczej. Vademecum Juniora przeznaczone jest zaś do wymiany wiedzy i doświadczeń na temat życia, kariery i problemów (niekoniecznie młodego) programisty.

1 000 000 zł

Milion złotych. Tak, milion złotych. Milion złotych to cel, który sobie postawiłem jakiś czas temu. Chcę zarobić milion złotych na tym blogu. Do tej pory zebrało się 25 447,69 zł, więc jak widzisz jest już co pokazać, ale do celu nadal sporo brakuje. Jeszcze nie wiem do końca jak, ale to zrobię. Na pewno nigdy nie będę pobierał żadnych opłat za dostęp do treści, bo tymi chcę się po prostu dzielić.

Wysoko ponad ten milion stawiam na szerzenie wiedzy i dotarcie do jak największej liczby osób. I tu mam prośbę do Ciebie: jeśli uważasz, ten artykuł za wartościowy, to udostępnij go proszę swoim znajomym. Przy lewej lub dolnej (na małych wyświetlaczach) krawędzi ekranu znajdziesz przyciski, które Ci to ułatwią. Jeżeli ich nie widzisz, to najprawdopodobniej zostały zablokowane przez Twój program do blokowania reklam. Niezależnie od tego, czy prześlesz ten wpis dalej, czy nie, to ja i tak dziękuję Ci serdecznie za doczytanie do tego miejsca! Do przeczytania niebawem.

PS. Jeśli mój blog przypadł Ci do gustu tak bardzo, że chciał(a)byś mi się w jakiś sposób odwdzięczyć, to mam dla Ciebie kilka ciekawych propozycji, z których możesz skorzystać. Szczególnie gorąco zachęcam do wsparcia poprzez serwis Patronite, ale jeżeli zdecydujesz się na którąkolwiek z wymienionych opcji, to serdecznie Ci za to DZIĘKUJĘ!

Picture Credits