指定直方图聚合时,是否可以将字符串转换为浮点数?因为我的文档中的字段是浮点型的,但没有通过Elasticsearch解析,因此当我尝试使用字符串字段求和时,它将引发下一个错误。
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" } } } } }
}
你需要这个
{ "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)
value
Float.parseFloat(doc['value'].value)