使用基于时间的过滤器查询数据

时间:2018-04-12 18:50:33

标签: elasticsearch

我试图创建一个搜索来返回带有关键术语的系统日志消息。我也想限制时间段。基于以下文档:

https://www.elastic.co/guide/en/elasticsearch/reference/6.2/full-text-queries.html

我以为我可以将查询和过滤器结合起来来检索这些文档:

GET /_search {
    "query": {
        "query_string" : {
            "default_field" : "message",
            "query" : "error OR warn OR fatal OR fail"
        }
    },
    "filter": {
      "range": {
        "timestamp": {
            "gte": "now-1hr"
        }
    }   
}}

这无法解析,我不能100%清楚原因。有没有人找到一个好的文档,显示如何将查询与基于时间的范围过滤器结合起来?我一直在网上搜索,但我的搜索没有找到任何有用的东西。感谢您的任何见解。

2 个答案:

答案 0 :(得分:1)

你想要的是一个bool查询

<tbody ng-repeat="ts in allInfo track by $index">
  <tr>
    <td>
       {{ts.id}}
    </td>
    <td>
      {{ts.participant}}
    </td>
    <td>
      {{temp[$index]}} 
    </td>
    <td class="text-capitalize">
      {{ts.action}}
    </td>
  </tr>
</tbody>

答案 1 :(得分:0)

使用&#34;条款&#34;查询,那是你的&#34;或&#34;

GET /_search
      {
       "query":{
          "bool":{
             "must":[
               {
                 "terms": {
                   "message": [
                     "error",
                     "warn",
                     "fatal",
                     "fail"
                   ]
                 }
               },
                {
                   "range":{
                      "timestamp":{
                         "gte":"now-1hr"
                      }
                   }
                }
             ]
          }
       }
    }