muszę uzyskać losową próbkę z indeksem ElasticSearch, czyli wydać kwerendy, która pobiera jakieś dokumenty z danego indeksu z prawdopodobieństwem ważonej Wj/ΣWi
(gdzie Wj
jest masa rzędu j
i Wj/ΣWi
jest suma wag wszystkich dokumentów w tym zapytaniu).ważona losowe próbkowanie w Elasticsearch
Obecnie mam następujące zapytanie:
GET products/_search?pretty=true
{"size":5,
"query": {
"function_score": {
"query": {
"bool":{
"must": {
"term":
{"category_id": "5df3ab90-6e93-0133-7197-04383561729e"}
}
}
},
"functions":
[{"random_score":{}}]
}
},
"sort": [{"_score":{"order":"desc"}}]
}
Zwraca 5 produktów z wybranej kategorii, losowo. Każda pozycja ma pole weight
. Więc prawdopodobnie muszę użyć
zgodnie z opisem here.
Mam następujące zagadnienia:
- Co to jest poprawny sposób to zrobić?
- Czy muszę włączyć Dynamic Scripting?
- Jak obliczyć całkowitą sumę zapytania?
Bardzo dziękuję za pomoc!