2017-08-04 82 views
1

我有兩個查詢。一個是在logmessage中搜索,第二個是在timestamp範圍內搜索。如何在elasticsearch中結合query_string和timestamp的範圍

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

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

我怎麼可以創建一個帶有兩個選項?我試過這個:

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

但沒有成功。有一個400錯誤,因爲語法錯誤我猜

回答

0

您正在尋找一個bool查詢https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-bool-query.html。您可以使用組合多個查詢到一個應該,必須,must_not和過濾條款:

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

THX就像一個魅力 – hudi

+1

喜的人是另外一個問題,但你可以再幫我。我注意到,我剛剛得到2000的查詢結果。如何改變以獲得更多 – hudi

+0

尺寸:3000應該做的伎倆https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-from-size.html – MartinSchulze