Som celkom nový elasticsearch (aj keď s reálna trochu SQL skúsenosti) a som v súčasnej dobe stretávajú s uvedením správneho dotaz spolu. Mám 2 boolean polia isPlayer
a isEvil
že zápis je buď true
alebo false
o. Na základe toho som si chcú rozdeliť moje datasetu do 4 skupín:
- isPlayer: pravda, isEvil: pravda
- isPlayer: pravda, isEvil: false
- isPlayer: false, isEvil: pravda
- isPlayer: false, isEvil: false
Tieto skupiny sa chcem náhodne zoradiť do seba, potom priložiť ich, aby sa jeden dlhý zoznam, ktorý som si paginate. Rád by som sa k tomu, že vo vnútri dotaz, ako sa zdá ako "správny" spôsob, ako to urobiť, pretože by som to podobne v SQL. V tomto zozname skupín majú byť zoradené v poradí, takže najprv všetky položky Skupiny 1 v náhodnom poradí, potom všetky položky Skupiny 2 v náhodnom poradí, potom všetky položky Skupiny 3, atď. . Je potrebné, aby náhodnosť triediaceho je reprodukovateľné, ak vzhľadom na rovnaké vstupy, takže ak triedenie je založené na random_score
v ideálnom prípade by som byť pomocou osiva na náhodnosť.
Môžem stavať jeden dotaz, ale ako sa môžem spojiť 4?
Ako prístupov som našiel tak ďaleko MultiSearch a Disjunction Max Dotaz. MultiSearch vyzerá to, že nepodporuje celkové počty strán. Pokiaľ ide Disjunction Max Dotazu, mohlo byť, že som chýba les pre stromy, ale tam som bojuje v s subqueries byť náhodne zoradené iba v rámci sami pred pridaním nich jeden k druhému.
Tu, ako som sa napísať jeden dotaz, teraz bez Disjunction Max Query
v prípade, že pomáha:
{
"query": {
"bool": {
"should": [
{
"term": {
"isPlayer": true
}
},
{
"term": {
"isEvil": true
}
}
]
}
}
}