elasticsearch 5.0
データベースからのデータを含むインデックスを で作成していますMySQL
。string
私のテーブルにdouble
は ESとして必要なフィールドがあります。
したがって、次を使用して適切なフィールドのインデックスを作成したときに、マッピングを追加しましたPUT
。
{
"mappings": {
"my_type": {
"properties": {
"chargeamount": {
"type": "double"
}
}
}
}
}
これを行った後、小数点以下の数字を含む値 (つまり: 23.23) は値を double として適切に返しますが、小数点以下の後にゼロを持つ数字 (つまり: 23.00) はそれを文字列自体として返します (つまり: 2300 )。
編集:これらは私が行った手順です:
最初に、上記のマッピングを本文として
PUT
リクエスト ( ) を介してインデックスを作成しました。http://hostmachine:9402/indexname
次に、を使用して (MySQL テーブルから) データをインデックスにプッシュしています
logstash
。必要に応じて、logstash conf を提供できます。データがインデックスにアップロードされたら、結果が double 値を示しているかどうかを確認するために、クエリを実行してみました。
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である必要があります。
どこが間違っていますか?どんな助けでも大歓迎です。