私はelasticsearchを使用しています2.3Elasticsearch 2.x、タグのクエリ、およびタグweigthによる結果の並べ替え
私は書籍のインデックスを持っています。各本にはタグがあり、各タグには重みがあります。 私はタグの重みでソートされた、要求されたタグを持つすべての書籍を取得したい。例えば
:
PUT book/book/0
{
"name": "book 0",
"tags": [
{"t": "comedy", "w": 30},
{"t": "drama","w": 20},
]
}
PUT book/book/1
{
"name": "book 1",
"tags": [
{"t": "comedy", "w": 10},
{"t": "drama","w": 5},
{"t": "other","w": 50},
]
}
PUT book/book/2
{
"name": "book 2",
"tags": [
{"t": "comedy", "w": 5},
{"t": "drama","w": 30},
]
}
PUT book/book/3
{
"name": "book 3",
"tags": [
{"t": "comedy", "w": 5},
{"t": "other","w": 30},
]
}
iは、タグのコメディとドラマを持っているすべての書籍を検索したいです。 結果順序は:
- ブック0(20 + 30)
- ブック2(30 + 5)
- ブック1(10 + 5)
UPDATE:欲しい 両方のタグに一致する書籍のみを返す(そして要求されたタグだけをソートする)。 「ドラマ」と「コメディ」を検索すると、両方のタグを持つ書籍(この場合は書籍0、本1、書籍2)のみが、リクエストされたタグの重みでソートされます。
どうすれば入手できますか?クエリの任意の例?
おかげで@Christoph Wurm。私が今抱えている唯一の問題は、コメディやドラマがタグですべての本を返すということです。しかし、私はコメディとドラマのタグですべての本が必要です。手伝ってくれますか? –
@YyalChええ、私は答えに入れました。 –
ありがとうございます!あなたの更新された答えでは、私は "score_mode": "sum"は表示されません。どのようにスコアをサマライズするのですか?それはデフォルトですか?私は別のスコア(平均のような)でそれを得たい場合。ありがとう。 –