2017-08-04 20 views
1

私は2つのクエリを持っています。 1つはログメッセージで検索し、2回目はタイムスタンプの範囲で検索します。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

あなたはブールクエリ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

関連する問題