私はyii\elasticsearch\Query
を使用しています。hereのようにスクリプトベースの並べ替えを使用します。私はYiiと何の可能性も見当たりません。yiiでelasticsearchスクリプトベースの並べ替えを使用する方法
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
ご存知ですか?
によってあなたのスコア計算の結果を乗算? – Miek
いいえ、私はyii \ elasticsearch \ QueryというPHPコードを見ているので、これは不可能です。 –