Elasticsearch w Krakowie
Za nami kolejne warsztaty z cyklu devWarsztaty. Tym razem na tapetę wzieliśmy ElasticSearcha, narzędzie, które może pomóc Twoim klientom znaleźć to czego faktycznie potrzebują. Prelegentem na wydarzeniu był Robert Łysoń – zaznajomiony z tą technologią od kilku lat. Warsztaty trwały od 9 do 17 zgodnie z duchem devWarsztaty w sobotę. Dla mnie były to na prawdę konkretne zajęcia, dlatego też chciałbym przybliżyć Wam czego się nauczyliśmy i do czego ta technologia może mieć zastoowanie. W ciągu kilku godzin zmierzyliśmy się z takimi zagadnieniami jak:
- zaawansowane,a co najważniejsze efektywne wyszukiwanie, odporne na błędy literowe
- alertowanie o nowych rekordach, np. w przypadku gdy ktoś doda produkt o bardzo zaniżonej cenie
Jeśli ktoś byłby zainteresowany całą prezentacją, Robert umieścił ją na swomi repo:
https://gitpitch.com/robertlyson/relevantsearch/master?grs=github&t=white
Dodatkowo sama firma Elastic podesłała nam kilka gadżetów do rozdania na warsztatach, dzięki – miły gest 🙂
O co chodzi z tym ElasticSearchem?
Przede wszystkim to NoSQL-wa baza danych. Jeśli nie wiesz o co chodzi, to wyobraź sobie, że to taka baza, w której dane nie posiadają miedzy sobą konkretnych relacji, a rekordy są zapisywane w przypadku Elasticsearch w kolekcjach zwanych dokumentami (. Oczywiście to nie wyczerpuje tematu, ale dzisiaj zajmujemy się samym elasticsearchem 🙂 ElasticSearch jest projektem OpenSource utworzonym w Javie na podstawie czegoś co nazywa się Lucene, która jest zaawansowanym silnikiem wyszukiwania. Na szczęście powstało mnóstwo klientów do połączenia z Elasticiem i możemy go dzis wykorzystać w C#, Java, Python i kilku innych językach.
No to w czym taka technologia może mi pomóc? Wyobraź sobie, że masz 100 000 produktów w soim sklepie internetowym, jeśli kiedykolwiek tworzyłeś kwerendy do zapytań SQL-owych to wiesz jak takie proste zapytanie może wyglądać. Dzisiejszy świat wymaga od programistów czegoś więcej niż „tego żeby działało”, ma działać szybko i wydajnie, no i żeby użytkownik najlepiej od razu dostał jakiś rezultat! Dlatego często w sklepach stosuje się coś takiego jak autocomplete, po każdej literce przeszukujemy bazę danych zawężając nasze wyniki. Jednak co się stanie, jeśli fraza składa się z czegoś więcej niż tylko nazwy?, może pojawi się jeszcze producent? I co w takim wypadku, czy ważniejsza powinna być nazwa, a może jednak nazwa producenta powinna silniej oddziaływać na efekt naszego wyszukwiania?
I tu własnie pojawia się siła ElasticSarch-a, do każedego interesującego nas pola możemy dodać wagi wpływając między innymi na tzw. scoring danego zapytania. I przyznam szczerze, że konfiguracja taka (przynajmniej na poziomie JSON-a) wydaje się być bardzo prosta. Poniżej przykładowe zapytanie do naszego elasticsearcha:
GET /products/_search { "query": { "multi_match": { "query": "productName", "fields": ["title^2","manufacturer"] // tutaj mówimy, żeby pole title było 2 razy ważniejsze od pola manufacturer } } }
Proste, prawda? Wyobrażacie sobie jak wyglądałoby to za pomocą zwykłego SQL-a? 🙂
Oczywiscie to tylko jeden z najprostszych przykładów, który pokazuje możliwości tego narządzenia. Do dyspozycji jest cały arsenał funkcjonalności, który może pomóc naszym użytkownikom.
Firma Elastic to nie tylko ElasticSearch
Dzisiaj chciałbym Wam dać jedynie zajawkę na to co da się zrobić, a jest tego oo wiele więcej. Sama firma Elastic ma również kilka darmowych narzędzi do przetwarzania danych oraz wersje płatne, ale to zostawmy na inny wpis. Na samych warsztatch korzystaliśmy z darmowego narzędzia o nazwie Kibana do przyjemnego zarządzania naszymi zapytaniami – całość w wersji Webowej i zapytań JSON-owych.
ElasticSearch pobierzecie za darmo z tej strony:
Bardzo dobry post! Przydał mi się podczas pisania mojego na temat integracji Spring Boot oraz Elasticsearch: https://arasoftware.pl/2020/05/12/spring-boot-elasticsearch/
Cześć, dzięki za opinie 🙂 Cieszę się, że ten tekst przyczynił się do napisania kolejnego posta z rodziny Elasticsearch.