我正在使用
yii\elasticsearch\Query
,并且我想使用基于脚本的排序,如此处所述。我认为 Yii 没有任何可能性。
我无法在索引处定义字段,因为我必须按 2 个或更多字段的总和进行排序。哪些字段参与排序是动态的。
我尝试动态定义一个脚本字段,Yii 允许什么:
$query->fields = array_merge($allFields, [
'rda_sum' => "doc['nutrient_220_rda_rate'].value + doc['nutrient_221_rda_rate'].value",
]);
但不幸的是,脚本字段不能在
orderBy
方法中使用。我收到错误消息:
No mapping found for [rda_sum] in order to sort on
有什么想法吗?
我认为最好的解决方案是将其应用为分数而不是计算字段。
https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-function-score-query.html
如果您需要相反的顺序,请将分数计算结果乘以-1