如何在yii中使用基于elasticsearch脚本的排序

问题描述 投票:0回答:1

我正在使用

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

有什么想法吗?

php sorting elasticsearch yii2
1个回答
0
投票

我认为最好的解决方案是将其应用为分数而不是计算字段。

https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-function-score-query.html

如果您需要相反的顺序,请将分数计算结果乘以-1

© www.soinside.com 2019 - 2024. All rights reserved.