2015-01-08 24 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捆绑了一些bug,

继承人结果查询:

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

有谁知道?

+0

我有同样的问题,你有没有找到答案? – parisssss

+0

不幸的是我没有找到任何解决方案。随意请求开发人员,我没有 –

+2

我在这里找到答案:) http://stackoverflow.com/questions/25199481/elasticsearch-sorting-integer-desc#answer-25200046 – parisssss

回答

0

似乎它是按字符串排序而不是整数。您可以将类型添加到排序参数中以指定整数。