elasticsearch/kibana 4:字段存在但不等于值

Pet*_*r M 28 elasticsearch kibana-4

elasticsearch版本1.4.5

kibana 4.1.1

logstash 1.5.2-1

如何在kibana 4的discover选项卡中构建搜索,只有在字段存在但不等于特定值时才返回结果?

我在logstash中有一些apache日志数据,我想返回已status_code定义但不等于200的所有条目.因此,如果可能的值为{undefined,200,403,404,500 等},我希望看到所有变体4xx和5xx错误,但没有定义字段的消息,而不是设置为200的消息.

我尝试过以下方法:

+status_code: (*) -status_code: (200)

((status_code: (*) AND NOT status_code: (200))
Run Code Online (Sandbox Code Playgroud)

我也看到了对elasticsearch curl查询的引用,但我不知道如何将它们变成我可以在kibana搜索栏中使用的东西.这是一个例子:

{
  "query": {
    "constant_score": {
      "filter": {
        "bool": {
          "must": {
            "exists": {
              "field": "status_code"
            }
          },
          "must_not": {
            "term": {
              "status_code": '200'
            }
          }
        }
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

谢谢!

Val*_*Val 56

您正在寻找的查询是这样的:

_exists_:status_code AND NOT status_code:200
Run Code Online (Sandbox Code Playgroud)

此链接显示查询字符串查询支持的所有内容.


Pet*_*r M 6

之前的答案正是我所要求的,但是,这也很有用:

 status_code:[300 TO 600]
Run Code Online (Sandbox Code Playgroud)