Varför vi jobbar med Elasticsearch

När man bygger e-handelslösningar med stora mängder produkter som dessutom har mycket text och egenskaper som man vill kunna söka bland, då ökar kraven på den sökmotor man väljer. För att kunna ge blixtsnabba och bra sökresultat till kunden krävs en högpresterande och skalbar sökmotor i botten på lösningen. En lösning vi har valt i flera större kundprojekt är Elasticsearch.

Elasticsearch

Hantera stora mängder data

Elasticsearch är en open source NOSQL DB sök- och analysmotor som kan hantera mycket stora volymer av data. Elasticsearch bygger på Lucene men adderar bland annat möjligheter att distribuera systemet över flera noder och man arbetar mot sökmotorn över ett JSon-baserat REST API.

Ett Elastic-system utgörs av ett antal huvudkomponenter. En Node är en enskild server som lagrar datan. Denna Node ingår i ett Cluster. Ett Cluster är en samling av en eller flera Noder och det är via Clustret indexering och sökning görs via REST APIet. Det är också möjligt att sätta upp replikering från ett Cluster till ett annat, detta gör det möjligt att skapa till exempel en failover lösning i händelse av att ett Cluster blir otillgängligt.

Vidare finns Index som är en samling av Document som normalt sett är av samma typ eller tätt förknippade med varandra. Ett Index är nyckeln till blixtsnabb sökning bland ingående dokument och hanterar även hur sökning ska gå till. Document är själva grundformen av information i Elastic och detta är representerat som JSon.

Slutligen finns något som kallas Shard som gör det möjligt att dela upp ett index i flera mindre delar vilket gör att ett stort index kan fördelas ut på flera noder. Det är även möjligt att skapa Replicas av dessa Shards för att skapa redundans. Detta är en viktig del i att ge stöd för i princip obegränsade datavolymer.

I programsviten finns även Kibana som är till för att enkelt kunna ställa frågor till Elasticsearch och för att kunna traversera och visualisera datan. I denna applikation finns mängder med färdiga visualiseringar så som histogram, linjediagram, pajdiagram, geomap, tidsserie, graf och nätverk. Dessutom finns stöd för att med hjälp av Machine Learning bland annat detektera avvikelser i datan.

Kraftfull sökmotor med flera anpassningar

Vanliga användningsområden för vår del är att designa en datamodell för främst produktdata och relaterade egenskaper till produkter för att möjliggöra riktigt bra sökmöjligheter där interaktiva fasetteringar visas för användaren. Där dessa ändras baserat på aktuellt produkturval allt eftersom kunden lägger på ytterligare filter eller gör sökningar baserat på text. Vi gör även ofta anpassningar i själva textanalysen för att bättre hitta i det sortiment och språk sajten har. Synonymhantering är också en vanlig anpassning för att förbättra användarupplevelsen.

Vi tycker att Elasticsearch är rätt val när man vill ha en kraftfull sökmotor och produktindex där man över tid vill vara säker på att man kan anpassa lösningen precis som man vill. Hör gärna av dig om du vill veta mer om våra lösningar.

Peter Söderbaum

Peter Söderbaum Affärsutvecklare e-handel, Gruppchef