在指定直方图聚合时,有没有办法将字符串转换为浮点数?因为我的文件的字段是浮点数但是没有被弹性搜索解析,当我尝试使用字符串字段进行求和时它会抛出下一个错误。
ClassCastException[org.elasticsearch.index.fielddata.plain.PagedBytesIndexFieldData
cannot be cast to org.elasticsearch.index.fielddata.IndexNumericFieldData]}]"
我知道我可以更改映射,但对于我的用例,如果我这样会更方便 可以指定像" script:_value.tofloat()"写作的时候 该领域的聚合。
这是我的代码:
{
"query" : {
"bool": {"
must": [
{"match": { "sensorId": "D14UD021808ARZC" }},
{"match": { "variableName": "CAUDAL"}}
]
}
},
"aggs" : {
"caudal_per_month" : {
"date_histogram" : {
"field" : "timestamp",
"interval" : "month"
},
"aggs": {
"totalmonth": {
"sum": {
"field": "value",
"script" : "_value*1.0"
}
}
}
}
}
}
答案 0 :(得分:12)
你需要这个
{
"query": {
"bool": {
"must": [
{
"match": {
"sensorId": "D14UD021808ARZC"
}
},
{
"match": {
"variableName": "CAUDAL"
}
}
]
}
},
"aggs": {
"caudal_per_month": {
"date_histogram": {
"field": "timestamp",
"interval": "month"
},
"aggs": {
"totalmonth": {
"sum": {
"script": "Float.parseFloat(doc['value'].value)"
}
}
}
}
}
}
对于名为value
的字段:Float.parseFloat(doc['value'].value)