0
src
,txt
およびflt
フィールドのドキュメントがあります。私は、次のようにtxt
フィールドで照会したい:src
によってスクリプトの順序付けでtop_hitsフィールドを使用した弾性検索集約
- グループ(bucketize)。
- 各バケットで最も関連性の高いトップ1の文書を計算します。
- 各バケットを
_score * doc.flt
値で注文します。
これまでのところ私は1と2を実装していましたが、3は実装しませんでした。3があまり効率的でないかもしれませんが、私はまだそのようなオプションが必要です。私のクエリは次のようになります。
{
"query" : {
'match' : {
'text' : {
'query' : <some text>,
'fuzziness' : 'AUTO',
'operator' : 'and'
}
}
},
"aggs": {
"by_src": {
"terms": {
"field": "src",
"size" : 10,
"order" : {"top_score" : "desc"}
},
"aggs": {
"top_hits" : {
"top_hits" : {
"sort": { "_score": { "order": "desc" } },
"size" : 1
}
},
"top_score": {
"max" : {
"script" : "_score",
}
}
}
}
}
}
返信いただきありがとうございますが、私はそれを取得しません。私の問題は、私が提供するクエリは、最初に、各バケット内のスコアでソートし、トップ1、2番目を取って、トップ1のスコアで各バケットを注文するということです。私がしたいのは、バケットをトップスコアトップスコアにトップヒットの値を掛けたもの、つまり "_score * doc.flt"、またはもっと複雑な関数でそれらを並べ替えます。 – Tzoiker
さて、私はこれをやったことはありませんが、スクリプトを調べるべきだと思います。https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-scripting-fields.html –
うん、私は試しましたが、これまでのところ成功はありません。私は非常に同じ解決されていない問題(抽出とtop_hitフィールドを使用して)ここで別のスレッドを発見しましたhttps://github.com/elastic/elasticsearch/issues/17355 – Tzoiker