2017-01-24 6 views
0

Я пытаюсь получить sum полей price и price_department.Сумма Elasticsearch возвращает округленное целочисленное значение поля 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 

aggs из body является:

'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',],], 
    ], 
    ], 
], 

Как вы можете видеть, sum из price выглядит правильно, но sum и stats из price_department округляется и возвращается как целое число.

+0

Пожалуйста, уточните свой вопрос с реальным отображением, которое у вас есть в вашем индексе, т. Е. После того, как вы заработаете 'curl -XGET localhost: 9200/index' – Val

+0

Как-то цена поля удваивается, а price_департамент длинный. Почему они могут быть изменены? – Justin

+0

Трудно сказать, не зная, как вы создали свой индекс и проиндексировали документы. – Val

ответ

-1

У меня были те же проблемы.

Оказалось, что мои сопоставления были короткими, чтобы использовать float, double или half_float, чтобы получить возврат float, а не целочисленный возврат.

Проверьте свои сопоставления!