Home » Elastic Search

Archiv der Kategorie: Elastic Search

Elastic Search Reading

10 Elastic Search Concepts you need to learn

A Practical Introduction to Elasticsearch

Begriffe

ELK(Elastic & Kibana): Elastic Stack: Beinhaltet als GUI Kibana und darunter Elastic Search.
IndexEin Daten-Topf innerhalb Elastic Search
Index PatternIndex Pattern definieren, welche Indizes, dass für eine Suche/Auswertung berücksichtigt werden sollen. –> Datenbasis
In der Kibana Suchmaske is dieser Parameter links oben angegeben.
Index TemplateDienen als Templates für Indizes, die „rollend“ angelegt werden. Z.B. soll ein Index jeden Tag neu angelegt werden: myindex_20220801, myindex_20220802, …
–> Das dazu gehörige Index Pattern wäre dann wahhrscheinlich „myindex*„.
BeatsTool zum (z.B. Zeit-ausgelösten) laden von Daten ins ES.
ECSElastic Common Schema
Ich glaube hier geht es z.B. darum Feld-Mappings zu erstellen, die dann für mehrere verschiedene Indexe gelten sollen. Z.B. soll ein Feld Namens http.request.method in allen Indexen geleich interpretiert werden.
AnalyzerParsed Felder zu Tokens
Definition und Zuweisen eines Analysers: –> siehe unten
TokenFeld das als soches gesucht werden kann.
(Alle Inhalte von Feldern können gefunden werden. Nur handelt es sich dann typischerweise um eine Volltext-Suche.)
Built-In Analysers <–versus–> Selbst definierte Analyser

Volltext-Suche:
{„query“:{„match_phrase„:{„field77″:“hans-peter“}}}
Spezifische Token-Suche:
{„query“:{„term„:{„field77″:“hans-peter“}}}


HTTP Kommando-Beispiel

Die HTTP-Kommandos können im Menu „Dev Tools“ ausgeführt werden.

Index anlegen:

put /meinIndex

Der so angelegte Index hat (selbst redend) weder Daten, noch Datentypen, not Mappings.

Einen Index anlegen unter Mitgabe von Datentypdefinitionen:

put meinIndex/
{
  "settings":{
    "analysis": {
      "analyser": {
        "my_url_pattern_analyzer": {
          "type": "pattern",
          "pattern": "\\/|\\?"
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "url.original": {
        "type": "text",
        "analyser": "my_url_pattern_analyzer"
      },
      "destination.ip": {"type":"ip"},
      "destination.port": {"type": "integer"},
      "message": {
        "type": "text",
        "analyser": "keyword"
      }
    }
  }
}

Obiges erstellt einen neuen Index Namens „meinIndex“.
Er enthält die Felder:

  • url.original, welches mit dem (weiter oben selber definierten) Analyser in Tokens geparsed werden soll
  • destination.ip vom Typ IP (Auf IP Typ Felder kann mit IP-Masken (z.B. 10.0.0.0/24) gesucht werden)
  • destistination.port vom Typ Integer
  • message vom (default) Typ Text, mit dem zugewiesenen (built in) Analyser „keyword“, welcher den ganzen Feld-Inhalt in ein einziges Token umwandelt.

Token: Sind Werte, nach denen schnell (indexiert?) gesucht werden kann (schneller als Volltextsuche).

Implizites Anlegen des Index beim Daten laden

Besteht ein Index noch nicht in den Daten geladen werden sollen, dann wird der Index implizit angelegt.

Ändern von Datentypen eines Index

put meinIndex
{
  "mappings":{
    "properties":{
      "destination.ip":{"type":"ip"},
      "destination.port":{"type":"integer"},
      "message":{"type":"text"}
    }
  }
}

Laden von Daten ins ES

curl -xpost http://elastic-node/meinIndex/_doc
-H 'content-Type: application/json'
-d'
{
  "@timestamp" : "2021-01-05T10:10:10",
  "message" : "Protocal Prort Mis-Match",
  "dst" : {
    "ip" : "192.168.1.56",
    "port" : "9090"
  }
}
'

Update von Werten eine Dokuments

put meinIndex/_doc/DOCKKEY030303020
{
  "field7" : "Value new"
}

Analyser ausführen

get /_analyse
{
  "analyser" : "standard",
  "text" : "www.lodrie.com/wp-container/xdn/do.php?cmd=dldl"
}

Der built-in „standard“ Analyser wird über den „text“ gejagt.