查询数字字段匹配字符串字段

时间:2017-05-10 13:54:15

标签: elasticsearch kibana kibana-5

我有一个ELK堆栈设置。当我对数字字段执行查询时,它也匹配字符串字段。例如,我正在向ELK发送Load Balancer日志,如果我对其执行backend_processing_time:>5,那么它也会与值backend_processing_time的{​​{1}}匹配。

在kibana界面上,显示查询在请求消息中匹配字符串。我无法理解对数字字段的查询如何与字符串匹配。

在kibana的开发工具部分,我尝试运行相同的查询

0.001

即使有这么多backend_processing_time,我也会得到结果。我无法理解为什么会这样。

我搜索了其他数字类型的字段,发现在数字字段上完成的所有查询都与字符串类型字段匹配。

我提供了GET _search { "query": { "range" : { "backend_processing_time" : { "gte" : 50000000000 } } } } 查询的示例搜索结果。在这个结果中可以看出backend_processing_time字段很小但仍然受到了影响。

backend_processing_time:>500000000

修改

我通过在kibana控制台中运行{ "_index": "logstash-2017.05.10", "_type": "prod-quizelb-logs", "_id": "AVvzYRgL49GPTZAKoDer", "_score": null, "_source": { "backendport": 80, "received_bytes": 0, "request": "http://en.meaww.com:80/locales/en.json", "backend_response": 200, "verb": "GET", "message": "2017-05-10T17:19:52.881044Z Prod-ELB 172.68.144.71:34803 10.1.91.253:80 0.000075 0.000606 0.000019 200 200 0 1881 \"GET http://en.meaww.com:80/locales/en.json HTTP/1.1\" \"Mozilla/5.0 (Linux; Android 6.0.1; SM-C900F Build/MMB29M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/58.0.3029.83 Mobile Safari/537.36 [FB_IAB/FB4A;FBAV/122.0.0.17.71;]\" - -\n", "type": "prod-quizelb-logs", "clientport": 34803, "request_processing_time": 0.000075, "urihost": "en.meaww.com:80", "response_processing_time": 0.000019, "path": "/locales/en.json", "@timestamp": "2017-05-10T17:21:18.280Z", "port": "80", "response": 200, "bytes": 1881, "clientip": "172.68.144.71", "proto": "http", "@version": "1", "elb": "Prod-ELB", "httpversion": "1.1", "backendip": "10.1.91.253", "backend_processing_time": 0.000606, "timestamp": "2017-05-10T17:19:52.881044Z" }, "fields": { "@timestamp": [ 1494436878280 ], "timestamp": [ 1494436792881 ] }, "highlight": { "backend_processing_time.keyword": [ "@kibana-highlighted-field@6.06E-4@/kibana-highlighted-field@" ], "request": [ "@kibana-highlighted-field@http@/kibana-highlighted-field@://@kibana-highlighted-field@en.meaww.com@/kibana-highlighted-field@:@kibana-highlighted-field@80@/kibana-highlighted-field@/@kibana-highlighted-field@locales@/kibana-highlighted-field@/@kibana-highlighted-field@en.json@/kibana-highlighted-field@" ], "elb.keyword": [ "@kibana-highlighted-field@Prod-ELB@/kibana-highlighted-field@" ], "urihost.keyword": [ "@kibana-highlighted-field@en.meaww.com:80@/kibana-highlighted-field@" ], "verb": [ "@kibana-highlighted-field@GET@/kibana-highlighted-field@" ], "request.keyword": [ "@kibana-highlighted-field@http://en.meaww.com:80/locales/en.json@/kibana-highlighted-field@" ], "type": [ "@kibana-highlighted-field@prod@/kibana-highlighted-field@-@kibana-highlighted-field@quizelb@/kibana-highlighted-field@-@kibana-highlighted-field@logs@/kibana-highlighted-field@" ], "message": [ "2017-05-10T17:19:@kibana-highlighted-field@52.881044Z@/kibana-highlighted-field@ @kibana-highlighted-field@Prod@/kibana-highlighted-field@-@kibana-highlighted-field@ELB@/kibana-highlighted-field@ 172.68.144.71:34803 10.1.91.253:@kibana-highlighted-field@80@/kibana-highlighted-field@ 0.000075 0.000606 0.000019 200 200 0 1881 \"@kibana-highlighted-field@GET@/kibana-highlighted-field@ @kibana-highlighted-field@http@/kibana-highlighted-field@://@kibana-highlighted-field@en.meaww.com@/kibana-highlighted-field@:@kibana-highlighted-field@80@/kibana-highlighted-field@/@kibana-highlighted-field@locales@/kibana-highlighted-field@/@kibana-highlighted-field@en.json@/kibana-highlighted-field@ @kibana-highlighted-field@HTTP@/kibana-highlighted-field@/1.1\" \"@kibana-highlighted-field@Mozilla@/kibana-highlighted-field@/5.0 (@kibana-highlighted-field@Linux@/kibana-highlighted-field@; @kibana-highlighted-field@Android@/kibana-highlighted-field@ @kibana-highlighted-field@6.0.1@/kibana-highlighted-field@; @kibana-highlighted-field@SM@/kibana-highlighted-field@-@kibana-highlighted-field@C900F@/kibana-highlighted-field@ @kibana-highlighted-field@Build@/kibana-highlighted-field@/@kibana-highlighted-field@MMB29M@/kibana-highlighted-field@; @kibana-highlighted-field@wv@/kibana-highlighted-field@) @kibana-highlighted-field@AppleWebKit@/kibana-highlighted-field@/@kibana-highlighted-field@537.36@/kibana-highlighted-field@ (@kibana-highlighted-field@KHTML@/kibana-highlighted-field@, @kibana-highlighted-field@like@/kibana-highlighted-field@ @kibana-highlighted-field@Gecko@/kibana-highlighted-field@) @kibana-highlighted-field@Version@/kibana-highlighted-field@/4.0 @kibana-highlighted-field@Chrome@/kibana-highlighted-field@/@kibana-highlighted-field@58.0.3029.83@/kibana-highlighted-field@ @kibana-highlighted-field@Mobile@/kibana-highlighted-field@ @kibana-highlighted-field@Safari@/kibana-highlighted-field@/@kibana-highlighted-field@537.36@/kibana-highlighted-field@ [@kibana-highlighted-field@FB_IAB@/kibana-highlighted-field@/@kibana-highlighted-field@FB4A@/kibana-highlighted-field@;@kibana-highlighted-field@FBAV@/kibana-highlighted-field@/122.0.0.17.71;]\" - -\n" ], "urihost": [ "@kibana-highlighted-field@en.meaww.com@/kibana-highlighted-field@:@kibana-highlighted-field@80@/kibana-highlighted-field@" ], "path": [ "/@kibana-highlighted-field@locales@/kibana-highlighted-field@/@kibana-highlighted-field@en.json@/kibana-highlighted-field@" ], "verb.keyword": [ "@kibana-highlighted-field@GET@/kibana-highlighted-field@" ], "proto.keyword": [ "@kibana-highlighted-field@http@/kibana-highlighted-field@" ], "port": [ "@kibana-highlighted-field@80@/kibana-highlighted-field@" ], "type.keyword": [ "@kibana-highlighted-field@prod-quizelb-logs@/kibana-highlighted-field@" ], "proto": [ "@kibana-highlighted-field@http@/kibana-highlighted-field@" ], "elb": [ "@kibana-highlighted-field@Prod@/kibana-highlighted-field@-@kibana-highlighted-field@ELB@/kibana-highlighted-field@" ], "backend_processing_time": [ "@kibana-highlighted-field@6.06E@/kibana-highlighted-field@-4" ], "port.keyword": [ "@kibana-highlighted-field@80@/kibana-highlighted-field@" ] }, "sort": [ 1494436878280 ] } 查询来获得映射。

我为GET /logstash-2017.05.11/_mapping/prod-quizelb-logs获取的映射显示了此

backend_processing_time

因此,该字段似乎是文本类型,因此导致此错误发生。

现在我有另一个混乱,即kibana显示为 "backend_processing_time": { "type": "text", "norms": false, "fields": { "keyword": { "type": "keyword" } } } 但弹性搜索显示类型number。此外,这是动态映射,因为我从来没有自己创建映射。我认为它们是在应用grok过滤器时由logstash创建的。

2 个答案:

答案 0 :(得分:1)

您需要控制这些索引(索引)的映射,以便您的字段实际上是一个数字。否则,您将无法确定您将拥有哪种类型的字段。所以,基本上你需要这样的东西,无论是在索引模板中,还是一直是静态映射:

    "backend_processing_time": {
      "type": "integer"
    }

答案 1 :(得分:0)

删除query_string中的空格。你的query_string应如下所示:

backend_processing_time:>0.5

阅读有关query_string syntax here

的更多信息