Php 如何结合bool-must和sort进行elasticsearch
我正在尝试对一些数据进行排序,在我的基本框架中,我的排序不起作用,如果我删除排序,它就可以正常工作 那么,我如何将排序放在我的基本骨架中,并对一些数据进行排序呢 我不能就这么说Php 如何结合bool-must和sort进行elasticsearch,php,sorting,
elasticsearch,Php,Sorting,
elasticsearch,我正在尝试对一些数据进行排序,在我的基本框架中,我的排序不起作用,如果我删除排序,它就可以正常工作 那么,我如何将排序放在我的基本骨架中,并对一些数据进行排序呢 我不能就这么说 $params['body'] = [ 'sort' => [['title' => ['order' => 'asc']]]]; $results = $client->search($params); 因为我还有其他条件,我需要这个条件。 谁知道怎么解决呢
$params['body'] = [
'sort' => [['title' => ['order' => 'asc']]]];
$results = $client->search($params);
因为我还有其他条件,我需要这个条件。
谁知道怎么解决呢
任何建议都将不胜感激
// my base skeleton
$params = array(
'index' => "myIndex",
'type' => "myType",
'body' => array(
'query' => array(
'bool' => array(
'must' => array(
// empty should clause for starters
)
)
),
'sort' => array()
)
);
// sorting is not working with bool and must
if ($request->request->get('salarySort')) {
$params['body']['query']['bool']['must'][] = array(
'sort' => array(
"title" => array('order' => 'asc')
)
);
}
这就是我得到的json_编码---
JSON中的查询---
你快到了。您已将空的
排序数组正确地放置在与查询相同的级别,这是正确的
当您尝试将其作为bool/must
约束而不是在空的sort
数组中馈送时,问题会出现
// sorting is not working with bool and must
if ($request->request->get('salarySort')) {
$params['body']['sort'][] = array( <---- this line needs to be changed
"Salary" => 'asc' <---- this line needs to be changed, too
);
}
//排序不适用于bool,必须
如果($request->request->get('salarySort')){
$params['body']['sort'][]=array('asc'非常感谢您的回答,但它没有按应有的顺序排序,请您再次检查一下,再次感谢您的回答:)@非常感谢您的回答val:),尽管它不起作用,也没有对文档进行排序:)您确定您的Salary
字段名正确吗?您可以使用json\u encode($params)打印生成的查询吗
或类似内容?我已经更新了我的问题val,请看一看:)因此,当我按名称排序时,它不是按名称排序
{
"index": "myIndex",
"type": "myType",
"size": 30,
"body": {
"query": {
"match_all": []
},
"sort": [
{
"title": "asc"
}
]
}
}
// sorting is not working with bool and must
if ($request->request->get('salarySort')) {
$params['body']['sort'][] = array( <---- this line needs to be changed
"Salary" => 'asc' <---- this line needs to be changed, too
);
}