2014-10-09 58 views
0

我已經設法組合了一些相當複雜的查詢(例如,用於從數據生成熱圖),並認爲我理解查詢語法,但看起來我不知道「T。在彈性搜索查詢中使用多個過濾器的正確方法

我試圖返回其符合以下條件的數據:

  • 事件MyEvent
  • 有一個名爲「MyField的」
  • 從不到一分鐘前一個時間戳字段。

這就是我累了,它不返回一個錯誤,但也不會返回正確的結果:

{ 
"query" : 
{ 
    "filtered": 
    { 
     "query": 
     { 
      bool: 
      { 
       must: 
        [ 
         { match: { "event": "UpdateTitle" } } 
        ] 
      } 
     }, 
     "filter" : 
     { 
      "range" : 
      { 
       "@timestamp" : 
       { 
        "gt" : "now-1m" 
       } 
      } 
     } 
     , 
     "filter" : 
     { 
      "exists" : 
      { 
       "field" : "Lobby" 
      } 
     } 
    } 
} 

}

很顯然,我已經試過讀該文檔,但它的例子通常只有片段而不是完整的查詢,並且使用相同命名的查詢和過濾器使得它們令人難以置信地混淆。

回答

0

這似乎產生我所期望的效果,希望它使用的過濾器在查詢:

{ 
"query" : 
{ 
    "filtered": 
    { 
     "filter" : 
     { 
      bool: 
      { 
       must: 
        [ 
         { "term": { "event.raw": "MyEvent" } }, 
         { "range" : { "@timestamp" : { "gt" : "now-1m" } } }, 
         { "exists" : { "field" : "MyField" } } 
        ] 
      } 
     }    
    } 
} 

}