[英]Elasticsearch Sort based on value first
我想對release date
結果進行排序。 我首先想要2015
電影,其余年份按has_poster
值排序。 所以我得到如下結果:
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), has_poster DESC ...
in MySQL for Elasticsearch。
你需要一個腳本化的排序:
{
"sort": [
{
"_script": {
"script": "if(doc['releasedate'].date.year==2015) return 1; else return 0;",
"type": "number",
"order": "desc"
}
},
{
"has_poster": "desc"
}
]
}
我不工作 => 類型名稱是字符串
$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'
]
]
]
];
但不工作
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.