我在elasticsearch 5.0
中創建索引,其中包含來自我的MySQL
db的數據。在我的表中有一個字段是string
,我在ES中需要它作爲double
。如果小數點後的數字爲零,它不會作爲雙精度值返回?
所以我沒有加入的映射,當我使用PUT
創建了相應的字段索引:
{
"mappings": {
"my_type": {
"properties": {
"chargeamount": {
"type": "double"
}
}
}
}
}
我這樣做後,其小數點後包含數字的值(即:23.23)以double形式正確返回值,但小數點後面有零的數字(即:23.00)將其作爲字符串本身(即:2300)返回。
EDIT: 這些是我沒有以下步驟:
我最初通過一個
PUT
請求 (http://hostmachine:9402/indexname
)與上述映射作爲 體創建的索引。然後,我使用
logstash
將數據(從我的MySQL表中)推送到索引。如果需要,我可以提供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:
我哪裏去錯了?任何幫助可以讚賞。
你能告訴你已經索引的文檔的例子,你正在運行的命令? – Val
@Val在這個意義上的文檔的例子? 我用這個('http:// hostmachine:9402/indexname')把上面的映射作爲'body'的請求創建了索引。在我創建索引之後,我試圖使用'logstash'將數據上傳到索引。 – Kulasangar
用更簡單的術語,你能顯示你運行的所有命令,以便你可以重現同樣的問題嗎? – Val