elasticsearch 查询与字符串字段匹配的数字字段,elasticsearch,kibana,kibana-5,elasticsearch,Kibana,Kibana 5" /> elasticsearch 查询与字符串字段匹配的数字字段,elasticsearch,kibana,kibana-5,elasticsearch,Kibana,Kibana 5" />

elasticsearch 查询与字符串字段匹配的数字字段

elasticsearch 查询与字符串字段匹配的数字字段,elasticsearch,kibana,kibana-5,elasticsearch,Kibana,Kibana 5,我有一个麋鹿堆栈设置。当我对数字字段执行查询时,它也与字符串字段匹配。例如,我正在向ELK发送负载平衡器日志,如果我对其执行后端处理时间:>5,那么它将与后端处理时间匹配,值也为0.001 在kibana接口上,它显示查询与请求消息中的字符串相匹配。我无法理解对数字字段的查询是如何与字符串匹配的 在kibana的开发工具部分,我尝试运行相同的查询 GET _search { "query": { "range" : { "backend_proc

我有一个麋鹿堆栈设置。当我对数字字段执行查询时,它也与字符串字段匹配。例如,我正在向ELK发送负载平衡器日志,如果我对其执行
后端处理时间:>5
,那么它将与
后端处理时间
匹配,值也为
0.001

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

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

GET _search
{
  "query": {
           "range" : {
            "backend_processing_time" : {
                "gte" : 50000000000
            }
        } 
  }
}
即使有这么多的后台处理时间,我也能得到结果。我无法理解为什么会发生这种情况

我还搜索了数字类型的其他字段,发现对数字字段执行的所有查询都与字符串类型的字段匹配

我提供了一个样本搜索结果,我得到的
后端处理时间:>500000000
查询。从这个结果中可以看出,后端处理时间域很小,但仍然很受欢迎

{
  "_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
  ]
}
编辑

我通过在kibana控制台中运行
GET/logstash-2017.05.11/_mapping/prod quizelb logs
query获得了映射

我为
后端处理时间
得到的映射显示了这一点

  "backend_processing_time": {
    "type": "text",
    "norms": false,
    "fields": {
      "keyword": {
        "type": "keyword"
      }
    }
  }
因此,该字段似乎是文本类型,从而导致发生此错误


现在我有了另一个困惑,即kibana将其显示为
number
,而elasticsearch将其显示为
text
类型。而且,这是动态映射的,因为我从来没有自己创建映射。我认为它们是在应用grok筛选器时由logstash创建的。

删除查询字符串中的空格。i、 e您的查询字符串应如下所示:

backend_processing_time:>0.5

阅读有关查询字符串语法的更多信息

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

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

我试过这样做,但仍然看到同样的结果。我正在编辑我的问题来解决这个问题。@shivams你能提供一个示例文档吗?那么,通过示例文档,如果我提供1结果的json对象,可以吗?当我再次看到我刚刚粘贴的结果时,在突出显示部分显示
后端处理时间.keyword
。我应该假设elasticsearch将后端处理时间视为关键字类型而不是数字。尽管在kibana的左侧列中,该字段显示为数字类型。
后端处理时间
字段的映射是什么?@andrestefan我已经用
后端处理时间
字段的映射编辑了我的问题。我认为在logstash中的grok解析过程中创建的动态映射可能会导致这种情况。那么,该字段自动映射为字符串可能有很多原因:在LS中,您无法确保事件内容实际上是一个数字而不是字符串。此外,您拥有的用于这些索引的模板(如果有的话)可能会将该字段作为数字忽略,并将其创建为
string
。或者,您发送给ES以获取新索引的第一个文档在该字段中会有一个实际有效的字符串,从而创建一个类型为
text
的字段。@Andrestfan因此,如果我显式强制该字段为LS中的数字,那么应该可以解决我的问题了?是的,肯定可以。这应该可以解决问题。我会试试看,然后接受你的回答。