如何在elasticsearch curl命令中获取最小值

时间:2015-07-30 07:59:50

标签: curl elasticsearch logstash

我是elasticsearch的新手。我希望从我的日志行字段的特定日期获得最小值。我的Kibana显示索引数据如下:

@timestamp      2015-07-30T22:22:07.071-07:00

@version        1

type        mtaLogs

Integerdata     052256894-0400

msgType     received from internet

msgid       qamail-4.02.0220150730080248.IJRUJ.email-qa-sun26@172.20.1.10

msgsize     5635

path        /opt/user1/log/mta.log

processID       23441

protocol        SMTP

rcpts       pd10@myoxdomain.com

sender      pd9@myoxdomain.com

servername      mta

sid     4F9F325E-8DECDB12-00003556.1

time        0

traceName       MsgTrace

我希望来自curl coomand的msgsize的最小值。

我的curl命令如下:

curl -XGET 'http://localhost:9200/_all/_search?pretty=true' -d '{
    "query" : {
        "bool" : {
                "must" : [
                        {
                        "match" : {
                                "type" : "mtaLogs"
                        }},
                        {
                        "match" : {
                                "msgType" : "received from internet"
                        }}  ,
                        {
                        "filtered" : {
                        "filter" : {
                                "range" : {
                                        "@timestamp" : {
                                                "from" : "2015-07-30T00:00:00",
                                                "to" : "2015-07-30T23:59:59"
                                        }
                                }
                        }
                        }
                        }
                ]
        }
    },
    "aggs" : {
          "min_size" : {
                   "min" : {
                          "field" : "msgsize"
                    }
           }
     }
}'

但我得到的例外情况如下:

 "index" : "logstash-2015.07.30",
      "shard" : 4,
      "status" : 500,
      "reason" : "ClassCastException[org.elasticsearch.index.fielddata.plain.PagedBytesIndexFieldData cannot be cast to org.elasticsearch.index.fielddata.IndexNumericFieldData]"
    } ]
  },
  "hits" : {
    "total" : 0,
    "max_score" : null,
    "hits" : [ ]
  },
  "aggregations" : {
    "min_size" : {
      "value" : null
    }
  }
}

虽然我正确地将这些字段解析为:

msgsize=%{INT:msgsize:int}

任何人都可以帮助我,因为出了什么问题?

1 个答案:

答案 0 :(得分:0)

您获得的异常是典型的情况,其中文档已使用先前配置的logstash编制索引,其中msgsize字段未正确映射到INT,然后配置已更改。因此,您最终会得到一些文档,其中msgsize为字符串,其他文档为msgsize为int,因此例外。

我在这里看到的唯一解决方案是擦除索引并使用最新配置重新编制日志索引。