Jsem poměrně nový na elasticsearch (i když s trochu kousavou SQL zkušenost) a jsem v současné době potýká s uvedením správného dotazu spolu. Mám 2 booleovské pole isPlayer
a isEvil
se, že položka je buď true
nebo false
na. Na základě toho se chci rozdělit mých údajů do 4 skupin:
- isPlayer: pravda, isEvil: true
- isPlayer: pravda, isEvil: false
- isPlayer: false, isEvil: true
- isPlayer: false, isEvil: false
Tyto skupiny chci, aby se náhodně třídění v sobě, pak se připojit je k být jeden dlouhý seznam, který můžu vložit. Rád bych k tomu, že uvnitř dotaz, jak to vypadá "správný" způsob, jak to udělat, protože já bych to udělal podobně jako v SQL. V seznamu skupin jsou řazeny v pořadí, takže nejprve všechny položky ve Skupině 1 v náhodném pořadí, pak všechny položky ve Skupině 2, v náhodném pořadí, pak všechny položky Skupiny 3 atd. . Je nutné, aby náhodnosti třídění je reprodukovatelný, pokud daný stejné vstupy, takže pokud třídění je založeno na random_score
v ideálním případě bych být pomocí semen pro náhodnost.
Mohu postavit jeden dotaz, ale jak mám kombinovat 4?
Jako přístupy, které jsem zatím našel, MultiSearch a Disjunkce Max Dotazu. MultiSearch vypadá to, že to nepodporuje Stránkování. Pokud jde Disjunkce Max Dotazu by to mohlo být, že mi chybí les pro stromy, ale tam mám problém v tom, že poddotazy být řazeny náhodně pouze v rámci sebe před připojením je na jednu další.
Zde, jak jsem se napsat jeden dotaz pro teď bez Disjunction Max Query
v případě , že to pomáhá:
{
"query": {
"bool": {
"should": [
{
"term": {
"isPlayer": true
}
},
{
"term": {
"isEvil": true
}
}
]
}
}
}