Tu‘ gefälligst was ich sage, oder ich hol‘ das Brecheisen und befördere dich zurück ins analoge Zeitalter!
Mit elasticsearch und Textfeldern ist das ja schon immer so eine Sache. Deswegen wurde vor geraumer Zeit beschlossen, dem Problem ein für alle Mal bei zu kommen: https://www.elastic.co/cn/blog/strings-are-dead-long-live-strings
Wer einen aktuellen ELK-Stack aufsetzt, wird auch feststellen, das davon schon automatisch gebraucht gemacht wird.
Ein Feld „message“ taucht somit entsprechend zwei mal auf. Als „message“ und als „message.keyword“ – ersteres für einfache Suchen nach Schlagwörtern, letzteres für genauere Suchen und Regular Expressions.
Bei meiner Suchanfrage über Kibana wollte das aber ums Verrecken nicht funktionieren (keine Ergebnisse gefunden).
Dabei kann man mit der Abfrage message.keyword: /.*CREATED.*/
eigentlich nicht viel falsch machen – vor allem wenn der String „CREATED“ definitiv so in dutzenden Einträgen vorkommt.
Fast eine Stunde lang recherchiert – nix. Es sollte laut allen Quellen eigentlich tun.
Bis mir die folgende kleine Box auffiel:
„Die werden doch nicht…“, dachte ich mir. Also den Mist deaktiviert:
…auch da hat er sich manchmal etwas lallig. Stellt sicher, dass da „Lucene“ steht:
Und siehe da: ruck das Dings, mehr nach links – und mit einem Mal da gings!
p.s.: JA! Ich weiß! …Kibana blendet unten rechts kleine Popups ein, wenn es der Meinung ist, dass man Lucene-Syntax statt KQL verwendet.
Das Problem ist nur: das macht es ständig! Auch bei Suchanfragen, die definitiv gültiges KQL sind!!!111elf
Und das geht einem halt recht schnell auf den Sack – und deswegen hatte ich die auch deaktiviert.
p.p.s.: Und denkt daran, dass bei Lucene die Groß-/Kleinschreibung wichtig ist! feld: NARF and message.keyword: /.*CREATED.*/
wird also nicht funktionieren, sondern euch im Zweifelsfall alles im eingestellten Zeitrahmen zurück liefern. Mit einem AND
wird ein Schuh drauß!
p.p.p.s.: Und außerdem daran denken, dass immer die komplette Zeile gematched werden muss! Auszug aus der Doku Lucene’s patterns are always anchored. The pattern provided must match the entire string
Kommentare von Martin Drößler