2015-01-08 6 views
0

я хочу, чтобы сортировать мой результат компаний, основанных на подсчете вложенных (занятость) объекты,Elasticsearch - foselastica Сортировки по целому числу, имеющей странные результаты

я добавил дополнительное поле к лицу компании, которая держит счет, как:

private employeeCount; 

getEmployeeCount(){ 
    return count($this->employments); 
} 

и добавить его в индекс, как:

  company: 
       mappings: 
        fullname: ~ 
        employeeCount: ~ 

поле правильно индексироваться и я получаю хиты, как:

"_hit": { 
"_index": "search", 
"_type": "company", 
"_id": "2628", 
"_source": { 
"fullname": "acme", 
"employeeCount": 9, 
... }, 
"sort": [ 
"9" 
] 

я добавил вроде как:

$query->addSort(array('employeeCount' => array('order'=>'desc'))); 

и результат, кажется, отсортирован правильно вниз от "9, 8, 7, 6 ...",

, но по какой-то причине есть некоторые результаты где-то в середине с более высоким employeeCount

, например так:

"_hit": { 
"_index": "search", 
"_type": "company", 
"_id": "2668", 
"_source": { 
"fullname": "acme2", 
"employeeCount": 18, 
... }, 
"sort": [ 
"18" 
] 

я ожидал этот результат, чтобы быть на вершине моего первого примера, но это где-то между 2 и 1

так два догадок, он сортирует 0-10 и все больше 10 игнорируется

или там это какая-то ошибка в elasticsearch или foselastica пачке,

Heres результирующий запрос:

search/company/_search (GET) 5.59 ms {"sort":[{"employeeCount":{"order":"desc"}}],"query":{"wildcard":{"fullname":{"value":"**","boost":1}}},"size":"2000","from":0} 

кто-нибудь какие-либо идеи?

+0

У меня такая же проблема, вы нашли ответ? – parisssss

+0

unfortunatly i не нашлось решений. Не стесняйтесь просить разработчиков, я не –

+2

Я нашел ответ здесь :) http://stackoverflow.com/questions/25199481/elasticsearch-sorting-integer-desc#answer-25200046 – parisssss

ответ

0

Кажется, что он сортируется как строка вместо целого. Вы можете добавить тип к параметрам sort, чтобы указать integer.

Смежные вопросы