2017-11-07 2 views
0

Ich habe Daten bekommen, die wie folgt aussieht:Lucene Wildcard-Suche

CK/YZfB6XUmSOSM3IJqM2Q; Response code: 404. Elapsed: 0ms. Request: GET /marketing
4kk/TiKjYU2JY0L2N14QLg; Response code: 200. Elapsed: 10ms. Request: GET /api/monitor
vhXVsw4sBk69qv7dGE8JYw; Response code: 404. Elapsed: 0ms. Request: GET /graph-statistics 4kk/TiKjYW2JY0L2N14QLg; Response code: 200. Elapsed: 10ms. Request: GET /api/monitor

Ich versuche es zu Abfrage/herauszufiltern, so dass nur ich mit dem 4xx bleiben Antworten.

Ich habe die Dokumentation zu wildcards lesen, also würde ich mindestens eine der folgenden Abfragen erwarten zu arbeiten (das wie in Kibana geschrieben):

message: "Response code: 4??" 
message: 4??. 
message: "Response code: 4*" 

Hier ist, wie diese in JSON aussehen, im Falle entkommen Angelegenheiten (ich habe der Kürze halber alle drei Abfragen in der gleichen JSON aufgezählt):

"filter" : [], 
"query" : { 
"query_string" : { 
    "query" : "message: \"Response code: 4??\"", 
    "query" : "message: 4??.", 
    "query" : "message: \"Response code: 4*\"", 
    "analyze_wildcard" : true 
} 
}, 

ich habe bisher kein Glück gehabt und ich bin aus Ideen laufen ...

Antwort

1

Basierend auf Ihrer Frage scheint der Text im Feld Nachricht indiziert zu sein. Wenn Ihre Abfrage nur 4XX-Antworten zurückgeben soll, versuchen Sie die folgende Abfrage.

message: (Response AND code AND 4??) 

Diese Abfrage im Wesentlichen wissen, lucene Datensätze zu erhalten, die die Worte haben Antwort, Code und 4xx in ihnen. Ich habe den folgenden Fall getestet, in dem Ihr Datensatz 400 als Teil der verstrichenen Zeit enthält.

......... Antwortcode: 200 Abgelaufene: 404ms .......

Aber die Abfrage funktioniert gut und kehrt nicht diese Ergebnisse als die 404 hat ms als Suffix. Also, das stimmt nicht mit Ihrer Suche nach 4 überein?.

Möglicherweise müssen Sie auch überprüfen, wie das Feld in Ihrer Sammlung indiziert ist. Wird es als Text oder String gespeichert? In Ihrem Codebeispiel wurde nicht : maskiert. Dies ist ein Sonderzeichen in Lucene.

Hinweis: Diese Abfrage überprüft Vorhandensein dieser Schlüsselwörter in Text aber noch unbedingt in der angegebenen Reihenfolge

+0

diese Abfrage nach Nachrichten zu suchen scheint, die _exactly_ dieser Zeichenfolge (mit „AND“ s) haben, anstatt neue hinzuzufügen Suchbegriffe durch das UND-Schlüsselwort ... –

+0

Ich habe bearbeitet, um die Anführungszeichen zu entfernen und geschweifte Klammern zu verwenden. Führen Sie die Abfragen über eine Lucene API oder Kibana UI aus? –

+0

das ist definitiv das nächste, das ich bisher habe! das einzige verbleibende (leichte) Problem ist, dass es auch zufällige 4xx in den Guids, die vor der Nachricht sitzen, anpasst; Ich denke, das liegt daran, dass ich die Anwesenheitsreihenfolge der Keywords nicht durchsetzen kann. Irgendein Weg, um dies zu umgehen? –