Kibana Suche nach Regulären Ausdrücken
Ich bin Neuling auf ELCH. Ich möchte die Suche für Dokumente, die basierend auf der Reihenfolge des Auftretens der Wörter in einem Feld. Zum Beispiel,
In doc1, my_field: "MEIN FOO WORD-BAR-BEISPIEL"
In doc2, my_field: "MEINE BAR WORD FOO BEISPIEL"
Ich würde gerne die Abfrage in Kibana für Dokumente, wo "FOO" gefolgt von "BAR" und nicht das Gegenteil. Also, ich möchte doc1 zurückgeben, in diesem Fall und nicht doc2.
Ich habe versucht, mit folgenden Abfrage in Kibana suchen. Aber, es funktioniert nicht. Diese Abfrage gar nicht produzieren keine Suchergebnisse.
my_field.raw:/.*FOO.*BAR.*/
Ich habe auch versucht mit analysiert-Feld(nur my_field
), aber ich kam zu wissen, dass sollte nicht funktionieren. Und natürlich auch, dass nicht irgendwelche Ergebnisse produziert.
Bitte helfen Sie mir mit diesem regex-Suche. Warum bin ich nicht immer alle passenden Ergebnis für diese Abfrage?
InformationsquelleAutor Krishna Chaitanya | 2016-11-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich bin mir nicht sicher, offhand, warum das regex-Abfrage würde nicht funktionieren, aber ich glaube, Kibana ist mit Elasticsearch - query-string der Abfrage dokumentiert hier so zum Beispiel könnten Sie tun, ein Satz-Abfrage (dokumentiert in dem link), indem Sie Ihre Suche in Anführungszeichen gesetzt werden, und es wäre nach dem Wort "foo" gefolgt von "bar". Dies würde besser zu, da würden Sie dies tun, auf das Analysierte Feld (my_field), wo es in Token aufgeteilt, jedes Wort ist eine schnelle lookups. So suchen Sie in Kibana wäre:
my_field: "FOO BAR"
Update:
Sieht aus wie dieses eine nervige Marotte von Kibana (wahrscheinlich für rückwärts-Kompatibilitäts-Gründen). Wie auch immer, das ist nicht passend für Sie, denn Sie sind auf der Suche gegen die nicht-analysierten Bereich und anscheinend Kibana standardmäßig ist Kleinschreibung die Suche, deshalb wird es nicht passen das die nicht analysiert Großbuchstaben "FOO". Sie können konfigurieren, dass dieser in Kibana erweiterte Einstellungen erwähnt hier, insbesondere durch die Einstellung der Konfigurationsoption "lowercase_expanded_terms" auf false.
So, ich werde verlangen, dass regex und nicht passenden Satz
Okay, ich habe herausgefunden, warum dies geschah für Sie (komische Eigenart von Kibana), aktualisiert die Antwort.
Auch vom performance-Standpunkt aus mit einem span in der Nähe Abfrage (phrase matching) verwendet, mit einem hohen slop-Wert + in_order = true würde das erreichen, was Sie regex tut und Sie könnte es gegen die analysierten Feldes, die ich glaubst sollte besser (weil jeder token seine Ordnung hat, also in der Theorie sieht es für beide Token stellt dann sicher, dass die indexOf(bar) > indexOf(foo), ähnliche Antwort hier - stackoverflow.com/a/26637081/1135228
InformationsquelleAutor RyanR
Kibana standard query language basiert auf Lucene Abfrage syntax.
Und dem Standard-Analysator wird die tokenisierung wird der text auf verschiedene Wörter: [MEINE, FOO, WORD, BAR, BEISPIEL]
Anstatt regex-match, können Sie versuchen, die folgenden such-string in Kibana:
Und wenn Ihr "my_field" Daten aussieht "MYFOOWORDBAREXAMPLE",die nicht in Token aufgeteilt, sollten Sie die Abfrage-string:
InformationsquelleAutor carton.swing