请求中添加过滤器。 ElasticSearch

时间:2015-06-23 11:26:00

标签: elasticsearch

我有我的要求:

*{

"query": {
"range": {
"@timestamp": {
"gt": "now-8h"
}
}
},

"filter" :{
"term": {
"user-id": "661474"
} 
},

"sort": [
{
"@timestamp": {
"order": "asc"
}
}
]
}*

我想在“消息”字段中添加字符串“log out”和“log in”的仅显示文档的过滤器。 但我无法理解我必须在我的请求中放置此过滤器。

1 个答案:

答案 0 :(得分:0)

如果您希望将这些值设置为过滤器而不是查询,则以下过滤器将起作用。

这会将您在userid字段上的数字值的现有过滤器与消息字段上的术语过滤器,bool和must关键字结合起来,表示两个过滤器必须评估为true才能返回。

您应该阅读combining过滤器和terms过滤器上的文档,了解其运行方式。

"filter": {
            "bool" : {
                "must" : [
                    {"term" : { "user-id" : "661474" } },
                    {"terms" : { "message" : ["log out", "log in"] } },
                ]
             }
         }

编辑以反映评论中的说明:

"query": {
    "query_string": {
      "default_field": "message",
      "query": "log in OR log out"
    }
  }

可以找到查询字符串语法文档here