2017-08-04 3 views
1

kombinieren Ich habe zwei Abfrage. Der eine sucht in der Logmeldung und der zweite im Bereich des Zeitstempels.Wie man query_string und Bereich der Zeitstempel in elasticsearch

query = { 
    "query": { 
     "query_string" : { 
      "query" : "logmessage:test" 
     } 
    } 

und

query = { 
    "query": { 
"range" : { 
      "@timestamp" : { 
       "lte" : "2017-08-04" 
      }     
     } 
    } 

Wie kann ich eine mit beiden Optionen erstellen? Ich habe es versucht:

query = { 
     "query": { 
      "query_string" : { 
       "query" : "logmessage:test" 
      }, 
    "range" : { 
       "@timestamp" : { 
        "gte" : "2017-08-04", 
        "lte" : "now" 
       }     
      } 
     } 
    } 

aber ohne Erfolg. Es gibt einige 400 Fehler wegen der schlechten Syntax Ich denke

Antwort

0

Sie suchen nach einer bool Abfrage https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-bool-query.html. Sie können mehrere Abfragen in einer zusammensetzen sollte verwenden, müssen, must_not und Filterklauseln:

{ 
    "query": { 
    "bool": { 
     "must": [ 
     { 
      "range": { 
      "@timestamp": { 
       "lte": "2017-08-04" 
      } 
      } 
     }, 
     { 
      "query_string": { 
      "query": "logmessage:test" 
      } 
     } 
     ] 
    } 
    } 
} 
+1

thx wirkt wie ein Zauber – hudi

+1

hallo Mann es ein anderes Problem ist, aber Sie können mich wieder helfen. Ich habe bemerkt, dass ich nur 2000 Ergebnisse in Abfrage bekommen habe. Wie kann ich ändern, um mehr zu bekommen – hudi

+0

Größe: 3000 sollte den Trick tun https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-from-size.html – MartinSchulze

Verwandte Themen