Organisera data med Elastic Ingest Pipeline
Att omvandla och bearbeta data innan indexering är en funktion i Elastic som ger stor nytta, detta kan göras med hjälp av verktyget Ingest Pipeline vilket gör det både enklare och smidigare. Efter man har processat data läggs de transformerade dokumenten till i en dataström eller ett index. Det är möjligt att skapa och hantera dessa pipelines med hjälp av Ingest API eller genom Kibana. Det som krävs för att få tillgång till denna funktion är att minst en nod i Elastic-klustret är en “ingest node”, den parametern är default satt redan vid uppsättning av Elastic-stacken.
Fördelar med Ingest Pipeline
Fördelarna med Ingest Pipeline är att man enkelt får ett städat och strukturerat index samt det användarvänliga GUI. Vidare möjligheten att simulera och att tillämpa en felhantering genom ’fail’ processor.
Vad är en Pipeline?
En pipeline är i korta drag ett JSON-dokument bestående av en beskrivning och en eller flera processer. Varje process exekveras i den ordning den definieras, det finns åtskilliga inbyggda processer att använda. Beskrivningen ’Description’ är inte nödvändig men är ett bra sätt att beskriva och lista vad som sker i din pipeline. Det ger en bra struktur.
Ett exempel på process är ’Lowercase’ som konverterar en sträng till motsvarande gemener. Om fältet är en array av strängar kommer alla medlemmar i arrayen att konverteras. I alla dessa processortyper kan villkor sättas som definierar när proceduren skall köras. Detta skrivs i ’Painless’ antingen inline eller som lagrade script.
Ett annat exempel är hur man kan hantera felaktigheter i pipeline. Pipeline exekverar sekventiellt och stannar vid första undantaget, vilket inte alltid är önskvärt.
Genom att sätta parametern ’on-failure’ definieras en lista av vad som skall köras omedelbart efter ett misslyckande. Man kan använda denna parameter både på processor och på pipeline-nivå. På detta sätt kan man kapsla felhantering för analys och därmed få en bättre utpekning.
I Elastic finns två tillvägagångsätt för att generera en pipeline:
Det är ingen skillnad på vad man kan göra i API eller Kibanas interface, det är snarare en smaksak hur man väljer att arbeta. Ytterligare en bra funktion är simulering. Genom att simulera pipeline kan man testa processen innan den används i produktion. För att utföra en simulering krävs ett dokument, antingen ett befintligt som definierats med ’id’ eller så skrivs ett nytt dokument manuellt i simuleringsfrågan.
För att koppla en pipeline till ett index krävs det att lägga till en rad i indexets inställningar:
’Index.default_pipeline : <– namn på pipeline –>’.
Att tillämpa pipeline på ett befintligt index och påverka dokument som redan finns används ’reindex’.
’_update_by_query?pipeline=<– namn på pipeline –>’