Io sono abbastanza nuovo di elasticsearch (anche se con un bel po ' di SQL esperienza) e sono attualmente alle prese con la messa una corretta query. Ho 2 campi booleani isPlayer
e isEvil
che una voce è true
o false
su. Sulla base di che, voglio dividere il mio dataset in 4 gruppi:
- isPlayer: true, isEvil: true
- isPlayer: true, isEvil: false
- isPlayer: false, isEvil: true
- isPlayer: false, isEvil: false
Questi gruppi voglio casualmente sorta all'interno di se stessi, quindi collegarli a essere un lungo elenco, che posso impaginare. Vorrei che all'interno della query, come sembra che sia il modo "giusto" per farlo, visto che mi piacerebbe farlo allo stesso modo in SQL. In tale elenco, i gruppi devono essere ordinati in ordine, quindi, prima di tutte le voci del Gruppo 1 in ordine casuale, quindi tutte le voci del Gruppo 2, in ordine casuale, quindi tutte le voci del Gruppo 3, etc. . È necessario che la casualità dell'ordinamento è riproducibile se dato gli stessi input, quindi, se l'ordinamento è basato su random_score
idealmente mi piacerebbe essere utilizzando un seme per la casualità.
Posso costruire una singola query, ma come faccio a combinare 4?
Come approcci che ho trovato finora MultiSearch e Disgiunzione Max Query. MultiSearch sembra che non supporta la Paginazione. Per quanto riguarda Disgiunzione Max Query potrebbe essere che mi manca la foresta per gli alberi, ma non ci sto lottando per avere la sottoquery essere ordinati in modo casuale e solo all'interno di se stessi prima di accodare l'uno all'altro.
Qui io scrivo una singola query, per ora senza Disjunction Max Query
in caso aiuta a:
{
"query": {
"bool": {
"should": [
{
"term": {
"isPlayer": true
}
},
{
"term": {
"isEvil": true
}
}
]
}
}
}