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. |
Index | Ein Daten-Topf innerhalb Elastic Search |
Index Pattern | Index 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 Template | Dienen 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*„. |
Beats | Tool zum (z.B. Zeit-ausgelösten) laden von Daten ins ES. |
ECS | Elastic 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. |
Analyzer | Parsed Felder zu Tokens Definition und Zuweisen eines Analysers: –> siehe unten |
Token | Feld 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.