我在 中创建了一个索引elasticsearch 5.0
,其中包含来自我的MySQL
数据库的数据。我的表中有一个字段,string
我需要它作为double
ES 中的 a。
因此,我所做的是在使用以下命令为相应字段创建索引时添加了映射PUT
:
{
"mappings": {
"my_type": {
"properties": {
"chargeamount": {
"type": "double"
}
}
}
}
}
在我这样做之后,一个包含小数点后的数字(即:23.23)的值将正确地返回为双精度值,但小数点后有零的数字(即:23.00)将其作为字符串本身返回(即:2300 )。
编辑:这些是我所做的步骤:
PUT
我最初是通过一个请求(http://hostmachine:9402/indexname
)以上述映射为主体创建索引的。然后我将数据(从我的 MySQL 表)推送到使用
logstash
. 如果需要,我可以提供 logstash conf。将数据上传到索引后,我尝试进行查询以检查结果是否显示双精度值。
POST
请求(和http://hostmachine:9402/indexname/_search?
正文如下:{ "size" : 0, "query":{ "query_string":{ "query":"myquery" } }, "aggs":{ "total":{ "terms":{ "field":"userid" }, "aggs":{ "total":{ "sum":{ "script":{ "lang": "painless", "inline" : "doc['chargeamount'].value" } } } } } } }
结果如下面的快照所示,应该是267472.00:
我哪里错了?任何帮助都将不胜感激。