我想根据嵌套(就业)对象的数量对公司的结果进行排序,
我向保存计数的公司实体添加了一个额外的字段,例如:
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 ...”正确排序,
但由于某种原因,在中间的某个地方有一些结果,员工人数较高
例如这个:
"_hit": {
"_index": "search",
"_type": "company",
"_id": "2668",
"_source": {
"fullname": "acme2",
"employeeCount": 18,
... },
"sort": [
"18"
]
我希望这个结果在我的第一个示例之上,但它介于 2 和 1 之间
所以有两个猜测,它是从 0-10 排序的,所有大于 10 的都被忽略
或者 elasticsearch 或 foselastica 包中存在一些错误,
继承人的结果查询:
search/company/_search (GET) 5.59 ms {"sort":[{"employeeCount":{"order":"desc"}}],"query":{"wildcard":{"fullname":{"value":"**","boost":1}}},"size":"2000","from":0}
有人知道吗?