elasticsearch,Php,Sorting,elasticsearch" /> elasticsearch,Php,Sorting,elasticsearch" />

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
    );
 }