Wat is ElasticSearch en wat kun je ermee?

Voor projecten die een complexe interne zoekmachine nodig hebben gebruiken we Elasticsearch. In dit artikel leg ik je uit wat Elasticsearch is en waarom we het graag gebruiken.

Elasticsearch is een product van het Nederlandse Elastic. Maar wat is het precies?

Laat ik het samenvatten: Elasticsearch is een systeem om snel door veel en verschillende soorten data te zoeken en er analyses op uit te voeren. Elasticsearch kan zoeken in data die in je website staat, maar ook door bestanden zoals pdf’s. En dat doet het systeem heel slim. Als ontwikkelaar kun je Elasticsearch zo instellen dat het kan omgaan met onzekere data. Zo kun je zorgen dat de bezoeker van een website nog steeds relevante zoekresultaten krijgt, als hij een zoekterm verkeerd spelt.  Bovendien is Elasticsearch – zoals de naam het zegt – een elastisch systeem. Oftewel: schaalbaar.

Voor wie is Elasticsearch geschikt?

We zetten Elasticsearch niet in voor alle projecten waar een zoekfunctie in zit.  Op veel websites volstaat een eenvoudige zoekfunctionaliteit waarmee wordt gekeken op welke pagina’s het gezochte woord voorkomt. Elastisch is pas aan de orde bij:

  • Projecten waarbij door ontzettend veel data moet worden gezocht. En dan niet alleen webpagina’s, maar ook documenten.
  • prioriteit in de zoekresultaten moet kunnen worden aangebracht. Het kan zijn dat bepaalde pagina’s belangrijker zijn dan anderen en daarop voorrang moeten krijgen. Dat kan met Elasticsearch.
  • Projecten waar je binnen de zoekresultaten op eigenschappen moet kunnen filteren. Stel je zoekt op een vacaturesite op ‘Webdesigner’, dan wil je het zoekresultaat wel kunnen filteren op eigenschappen als contractduur, niveau en plaats.

De implementatie van Elasticsearch

Er is ontzettend veel mogelijk met Elasticsearch. Toch hebben de makers het zo weten op te zetten dat het voor ons ontwikkelaars snel op te zetten is en aan te passen naar de wensen bij een project.

Elasticsearch draait in een eigen omgeving op de server en bouwt daar zijn eigen database op. Je kunt via een RESTful API met Elasticsearch praten. Ons CMS (de Webmagiër) gebruikt dit om data in de database van Elasticsearch te plaatsen.

De website haalt via de Webmagiër de juiste data uit Elasticsearch en MySQL

Meestal slaan we op twee plaatsen data op. In een MySQL database staat alle data die relevant is voor het renderen van de pagina. In Elasticsearch slaan we alle gegevens op waarop je wilt filteren. Zie de volgende afbeelding:

In de afbeelding zie je een pagina waarop een bezoeker naar cursussen binnen de culturele sector kan zoeken. De titel van de pagina (“Zoeken”) en de titel, afbeelding, en introductie van de zichtbare cursussen komen uit MySQL. De beschikbare filters links (en teller hoeveel resultaten het oplevert) komen uit Elasticsearch. Via de gekozen filters kunnen we aan Elasticsearch vragen welke cursussen aan de eisen voldoen. Deze vragen we op aan MySQL zodat we deze in het resultaat kunnen tekenen.

Voorbeelden van Elasticsearch

We hebben voor meerdere klanten Elasticsearch op de website gerealiseerd. Het gaat vaak om grote hoeveelheden data waar de bezoeker door middel van filters doorheen kan zoeken. Een drietal voorbeelden:

Productgauge 

Product Gauge is alomvattend, actueel en eenvoudig te raadplegen overzicht van onderdelen voor gas- en vloeistofsystemen. Zoeken, vergelijk en lijsten maken was het uitgangspunten. Voor het zoeken hebben Elasticsearch geïmplementeerd. Je kunt op basis van filters en producteigenschappen filteren. Deze filters blijven bewaard waardoor je deze steeds kunt aanpassen.

Productgauge zoekmachine

Research Heroes

Research Heroes is een platform om bedrijven in contact te brengen met goede marktonderzoeker. Dit gaat onder meer door middel van de Hero-finder. Je geeft aan welke karakteristieken van belang zijn, en hoppa: altijd resultaat. Elk nieuw filter dat je toepast, zorgt niet alleen dat de resultaten opnieuw gefilterd worden, maar ook de filters zelf. Je ziet dus alleen filters die daadwerkelijk een resultaat opleveren.  

Research Heroes Hero-finder

Onderwijsraad

De zoekmachine van de Onderwijsraad zoekt door alle publicaties die de Raad heeft gedaan sinds 1919. Het systeem zoekt niet alleen door de website, maar ook door alle pdf-bestanden die gekoppeld zijn aan de publicaties. Dit doet het systeem op een fuzzy manier. Dus zelfs als je een spelfout maakt, kan het systeem toch goede resultaten vinden. Net als bij Research Heroes filteren de filters zichzelf, waardoor een filter altijd resultaat oplevert. Op de achtergrond kan de Onderwijsraad zelf bepaalde publicaties een bepaald gewicht meegeven en daarmee de sortering van de resultaten beïnvloeden. . Voor publicaties zonder gewicht geldt dat de meest relevante resultaten bovenaan staan.

Zoeken naar publicaties op onderwijsraad.nl

Waarom werken wij met Elasticsearch?

Elasticsearch is een sterke techniek die complexe zoekmachines mogelijk maken binnen websites. Elasticsearch is een op zichzelf draaiend proces. Wij kunnen deze software voor onze klanten op de server installeren en inrichten. Ons CMS werkt naadloos met Elasticsearch. Dit zorgt ervoor dat we een realtime koppeling kunnen maken met de data die onze klanten in het CMS beheren en de data in Elasticsearch. De mate van vrijheid van het inrichten en de schaalbaarheid maken dat Elasticsearch onze favoriete keuze is voor het bouwen van complexe zoekmachines.

Geschreven door Cees-Willem Hofstede

Software Consultant

Blijf up-to-date en ontvang updates in je mailbox

Lees ook deze interessante blogs

Roast your boss 2019

We leren graag. Zodat we kunnen groeien en beter worden in ons vak. Feedback is hierbij essentieel. Wat gaat er goed, wat kan er beter en waar kun je beter direct mee stoppen. Waardevol. Soms pijnlijk. Altijd inzichtelijk. Niet alleen voor medewerkers maar ook voor bazen.

Drop-down-navigatiemenu’s: waarom niet?

Met enige regelmaat krijgen wij de vraag of we een drop-down-menu kunnen implementeren als basisnavigatie voor een website. Een drop-down-menu – ook wel bekend als pull-down-menu – is een lijst van subpagina’s onder de items van een hoofdmenu. Deze klapt zich direct uit onder het hoofditem. In de afgelopen decennia is het een gangbare manier geworden om veel pagina’s te groeperen op een website. Deze vorm van navigatie wordt echter steeds minder populair – en...

Easy LMS - Van de eerste stapjes naar een volwassen product

Easy LMS is ons online Saas Learning Management System. In een kleine 4 jaar is ons product uitgegroeid tot een volwaardig Learning Management Systeem met meer dan 1500 betalende klanten wereldwijd. In deze serie artikelen neem ik jullie mee in onze ontdekkingsreis van het ontwikkelen van een Saas-product voor de internationale markt. Lees hier deel I.