2016-11-13 3 views
2

Ich bin ein Neuling für ELK. Ich möchte Dokumente nach der Reihenfolge des Auftretens von Wörtern in einem Feld suchen. Zum BeispielKibana Regulärer Ausdruck Suche

In doc1, my_field: "MY FOO WORD BAR Beispiel"
In doc2, my_field: "MY BAR WORD FOO Beispiel"

Ich mag würde in Kibana für Dokumente abfragen, wo "FOO" ist gefolgt von "BAR" und nicht das Gegenteil. Also, ich möchte Doc1 in diesem Fall und nicht Doc2 zurückkehren. Ich habe versucht, unter Abfrage in Kibana Suche verwenden. Aber es funktioniert nicht. Diese Abfrage führt nicht einmal zu Suchergebnissen.

my_field.raw:/.*FOO.*BAR.*/ 

ich auch mit analysierten Feld (nur my_field) versucht, obwohl ich weiß, kam das nicht funktionieren sollte. Und das hat natürlich auch keine Ergebnisse gebracht.

Bitte helfen Sie mir mit dieser Regex-Suche. Warum erhalte ich für diese Abfrage kein passendes Ergebnis?

Antwort

1

Ich bin mir nicht sicher, warum diese Regex-Abfrage würde nicht funktionieren, aber ich glaube, Kibana verwendet Elasticsearch Query String Query dokumentiert here so zum Beispiel Sie könnten eine Phrase Abfrage (in den Link dokumentiert), indem Sie Ihre Suche in Anführungszeichen und es würde nach dem Wort "foo" gefolgt von "bar" suchen. Dies würde auch besser funktionieren, da Sie dies auf Ihrem analysierten Feld (my_field) tun würden, wo es jedes Wort in Tokens umgewandelt hat, um schnelle Suchvorgänge durchzuführen. So suchen Sie in Kibana wäre:

my_field: "FOO BAR"

Update:

Sieht aus wie dies eine lästige Marotte von Kibana ist (wahrscheinlich aus Gründen der Rückwärtskompatibilität Gründen). Wie auch immer, dies passt nicht zu dir, weil du nach einem nicht analysierten Feld suchst und anscheinend ist Kibana standardmäßig die Suche niedriger, daher wird es nicht mit dem nicht analysierten Großbuchstaben "FOO" übereinstimmen. Sie können dies in den erweiterten Kibana-Einstellungen, die here genannt werden, konfigurieren, insbesondere indem Sie die Konfigurationsoption "lowcase_expanded_terms" auf false setzen.

+0

Danke für die Antwort. Nicht nur das. Ich werde alle Dokumente benötigen, auch wenn "FOO" und "BAR" durch andere Wörter getrennt sind.
Beispiel: ** Übereinstimmung ** doc1, my_field: "MEIN FOO WORT BAR BEISPIEL". ** Nicht übereinstimmend ** doc2, mein_feld: "MEIN BARWORT FOO BEISPIEL" –

+0

Also, ich werde Regex und keine passende Wortgruppe benötigen –

+0

Okay, ich fand heraus, warum dies für dich passierte (seltsame Eigenart von Kibana), aktualisierte die Antwort. – RyanR