2017-01-24 11 views
0

priceprice_departmentsumを取得しようとしています。Elasticsearch sumはfloatフィールドの丸められた整数値を返します

マッピングは:

   'completed_order' => [ 
        'properties' => [ 
         'driver_id'  => [ 
          'type' => 'integer', 
          'index' => 'not_analyzed', 
         ], 
         'order_id'   => [ 
          'type' => 'integer', 
          'index' => 'not_analyzed', 
         ], 
         'price'   => [ 
          'type' => 'float', 
          'index' => 'not_analyzed', 
         ], 
         'price_department' => [ 
          'type' => 'float', 
          'index' => 'not_analyzed', 
         ], 
        ], 
       ], 

問題がprice_departmentの和が整数値であることです。私はまた、そのフィールドの統計を取得しようとしました。結果は次のとおりです。

...'_source' => 
    array (size=6) 
    'driver_id' => int 4469 
    'price' => float 5.99 
    'order_id' => int 2200676 
    'price_department' => float 5.99... 

...'total_price' => 
    array (size=1) 
    'value' => float 5.99 
'department_price' => 
    array (size=1) 
    'value' => float 5 
'department_price_stats' => 
    array (size=5) 
    'count' => int 1 
    'min' => float 5 
    'max' => float 5 
    'avg' => float 5 
    'sum' => float 5 

bodyaggsは次のとおりです。

'aggs' => [ 
    'drivers' => [ 
    'terms' => ['field' => 'driver_id','size' => 0,], 
    'aggs' => [ 
     'total_price' => ['sum' => ['field' => 'price',],], 
     'department_price' => ['sum' => ['field' => 'price_department',],], 
     'department_price_stats' => ['stats' => ['field' => 'price_department',],], 
    ], 
    ], 
], 

あなたが見ることができるように、pricesumが正しい見えますが、sumprice_departmentstatsは四捨五入して整数として返されます。

+0

あなたのインデックスにある実際のマッピング、つまり 'curl -XGET localhost:9200/index'を実行すると、質問を更新してください – Val

+0

どういうわけか、フィールド価格は倍で、price_departmentは長いです。なぜ彼らは変えることができましたか? – Justin

+0

索引を作成して文書を索引付けした方法を知らずに伝えるのは難しいです。 – Val

答えて

-1

私は同じ問題がありました。

私は自分のマッピングを短く設定していましたが、float、double、またはhalf_floatを使用して、整数の戻り値ではなく浮動小数点の戻り値を取得する必要がありました。

マッピングを確認してください!

関連する問題