我是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}
任何人都可以帮助我,因为出了什么问题?
答案 0 :(得分:0)
您获得的异常是典型的情况,其中文档已使用先前配置的logstash编制索引,其中msgsize
字段未正确映射到INT,然后配置已更改。因此,您最终会得到一些文档,其中msgsize
为字符串,其他文档为msgsize
为int,因此例外。
我在这里看到的唯一解决方案是擦除索引并使用最新配置重新编制日志索引。