elasticsearch 5.0
にインデックスを作成しました。ここにはMySQL
dbのデータが含まれています。私のテーブルにはstring
というフィールドがあります。これはESにdouble
として必要です。私はPUT
使用して、適切なフィールドのインデックスを作成したとき、私はマッピングを添加してなかったので、何10進数の後の数字がゼロの場合、double値として返されません。
:私はこれをした後、小数点以下の数字が含まれている値を
{
"mappings": {
"my_type": {
"properties": {
"chargeamount": {
"type": "double"
}
}
}
}
}
(すなわち:23.23)を値をdoubleとして正しく返しますが、小数点以下の零点を持つ数字(つまり:23.00)は文字列として返します(つまり:2300)。
EDIT: これらは私がしたステップである。
Iが最初 体として上記マッピングと
PUT
要求 (http://hostmachine:9402/indexname
)を介してインデックスを作成しました。次に、
logstash
を使用してインデックス(私のMySQLテーブルから)にプッシュしています。必要に応じてlogstash confを提供することができました。データがインデックスにアップロードされると、結果が2倍の値を示すかどうかを確認するためにクエリを実行しようとしました。
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')putリクエストを使用して、上記のマッピングを' body'として作成しました。インデックスを作成した後、私は 'logstash'を使ってインデックスにデータをアップロードしようとしています。 – Kulasangar
簡単に言えば、実行したすべてのコマンドを表示して、表示されている問題と同じ問題を再現することができますか? – Val