's Picture

ElasticSearch - Expressens gyllene hammare

Postad av Joel Abrahamsson under ElasticSearch

Igår höll jag en presentation på ElasticSearch meetup som arrangerades i Findwise lokaler. Ämnet var hur vi använder ElasticSearch på Expressen, eller snarare att vi använder ElasticSearch till det mesta. Nedan kommer en kortare summering med några, men inte alla, exempel på vad vi använder ElasticSearch till.

Innehåll och topplistor

Som jag tidigare har berättat om håller vi på att gradvis migrera Expressen.se till en ny miljö baserad på bland annat Node.JS. Vi gör detta genom att publicera nytt innehåll i vårt CMS som meddelanden på RabbitMQ. Från RabbitMQ flödar innehållet vidare till vårt API som lagrar det i ElasticSearch. Ovanpå API:et bygger vi sajter, bland annat Expressen.se, Omtalat.nu och ny Leva & Bo.

Praktiskt innebär detta att ett anrop från en besökare till våra sajter leder till ett API-anrop med den relativa URL:en som efterfrågades. API:et hanterar anropet genom att ställa en sökfråga till ElasticSearch för att hitta den sida som har, eller tidigare har haft, den URL:en.

Redaktionellt innehåll är naturligtvis centralt för att rendera en Expressen-sajt. Men, det finns annat data som behövs också. Två sådana exempel är sidvisningar och videovisningar som exempelvis användarinteraktioner såsom sidvisningar och videovisningar som kan aggregeras ihop till topplistor. Även här spelar RabbitMQ och ElasticSearch en viktig roll för oss.

Hur ser då det ElasticSearch-kluster som hanterar innehåll och användarinteraktioner ut? Vi använder oss av tre noder med 128 GB minne och 500 GB SSD var. Dessa formerar produktionsklustret som vi har döpt till The Chocolate Tree efter en karaktär i Dora utforskaren. I klustret finns i runda slängar åtta miljoner dokument och det hanterar 100-200 sökfrågor i sekunden.

Loggar

Som de ElasticSearch-fanatiker som vi är använder vi naturligtvis också Logstash och ElasticSearch för att aggregera loggar från våra olika applikationer. Nedan skärmdump visar dashboarden som visualiserar loggar från vårt API.

Den understa grafen är troligen mest intressant. Den visar svarstid från API:et, API:ets upplevda svarstid från ElasticSearch samt ElasticSearchs upplevda svartsid för sökfrågor.

Laddningstider

Vi mäter faktiska svarstider för våra besökare med hjälp av Boomerang. Mätvärdena publiceras, precis som innehåll och användarinteraktioner, på RabbitMQ och sparas i... (kan du gissa?) ElasticSearch. Detta data bygger vi sedan dashboards för i Kibana så att de olika teamen kan se generella och specifika mätvärden.

Handen på hjärtat så är vi inte så jättenöjda med denna lösning. Boomerang och ElasticSearch fungerar utmärkt men Kibana är inte riktigt gjort för det här användningsområdet där man gärna skulle vilja ha lite andra typer av visualiseringsmöjligheter och avrundade värden.

Quickshots

Vårt Quickshot team består av utvecklare och journalister. Deras uppdrag är att förstärka och förbättra Expressens berättande på daglig basis med hjälp av utveckling. Läs gärna mer om dem här och här.

Även Quickshot-teamet använder ElasticSearch. Exempelvis för att visualisera valdata och för olika typer av listor.

Foto toppbild: Shutterstock

PS. Missa inte vår nästa bloggpost, följ oss på Twitter!

Till startsidan