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

Php 基于值优先的Elasticsearch排序

Php 基于值优先的Elasticsearch排序,php,mysql,sorting,elasticsearch,Php,Mysql,Sorting,elasticsearch,我想在发布日期对结果进行排序。我想先看2015电影,剩下的几年在海报上排序有价值。所以我得到的结果如下: 2015, 2015, 1989, 2017, 2006 等等 到目前为止,这就是我得到的 $params['index'] = 'movies'; $params['type'] = 'movie'; $params['body']['size'] = 50; $params['body']['sort'] = array( array('has_poster' =>

我想在发布日期对结果进行排序。我想先看
2015
电影,剩下的几年在
海报上排序有价值。所以我得到的结果如下:

2015, 2015, 1989, 2017, 2006
等等

到目前为止,这就是我得到的

$params['index'] = 'movies';
$params['type']  = 'movie';
$params['body']['size'] = 50;
$params['body']['sort'] = array(
    array('has_poster'  => "desc"),
    array('_score'  => "desc"),
);        
$params['body']['query']['filtered'] = array(
    'query' => array(
        'query_string' => array(
            'query' => "survivor",
            'fields' => array('name', 'orig_title'),
            'default_operator' => "AND"
        ),
    )
);

我需要相当于
。。。ORDER BY FIELD(releasedate,2015)在MySQL中为Elasticsearch提供了海报描述。

您需要一个脚本排序:

{
  "sort": [
    {
      "_script": {
        "script": "if(doc['releasedate'].date.year==2015) return 1; else return 0;",
        "type": "number",
        "order": "desc"
      }
    },
    {
      "has_poster": "desc"
    }
  ]
}

Im not work=>类型名称为字符串

$params['body']['sort']= array('name' => 'desc' );

$params=[
                'index'=>'pets',
                'type'=>'bird',
                'body'=>[
                    'query'=>[
                        'bool'=>[
                            'must'=>[],
                            'filter'=>[
                                'range'=>[
                                    'registered'=>[
                                    'gte' => "2020-10-01", 
                                    'lte' => "2020-11-30"]
                                ]
                            ]
                        ]
                    ],
                    'sort'=>[
                        'name'=>[
                            'order'=>'asc'
                        ]
                    ]
                    
                ]
            ];

但不起作用

我刚刚尝试了这个,但在PHP(laravel)中出现了一个BadRequest400Exception错误。如果我注释掉
\u脚本
部分,那么我会再次得到结果。
ScriptException[类型为[inline]、操作[search]和lang[groovy]的脚本被禁用];]您需要在Elasticsearch.Oh中启用动态脚本。我会试试看,如果有用的话会告诉你的。谢谢但我需要让你知道,并建议把脚本归档。但是,在此之前,请看脚本本身是否适合您。