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" } } 
        ] 
      } 
     }    
    } 
} 

}

相关问题