Soy bastante nuevo en elasticsearch (aunque con un poco justo de SQL experiencia) y actualmente estoy luchando con poner una consulta adecuada juntos. Tengo 2 campos booleanos isPlayer
y isEvil
que una entrada es true
o false
en. Basado en eso, quiero dividir mi conjunto de datos en 4 grupos:
- isPlayer: true, isEvil: true
- isPlayer: true, isEvil: false
- isPlayer: false, isEvil: true
- isPlayer: false, isEvil: false
Estos grupos quiero ordenar aleatoriamente dentro de sí mismos, a continuación, adjuntar a ser una larga lista que puedo paginar. Me gustaría hacer que dentro de la consulta, como que se parece a la manera "correcta" de hacerlo, ya que me gustaría hacerlo de manera similar en SQL. En esa lista, los grupos se clasifican en orden, así que primero todas las entradas de Grupo 1 en un orden aleatorio, entonces todas las entradas de Grupo 2 en un orden aleatorio, entonces todas las entradas de Grupo 3, etc. . Es necesario que la aleatoriedad de la selección es reproducible si se les da las mismas entradas, así que si la clasificación se basa en random_score
lo ideal sería el uso de una semilla para la aleatoriedad.
Que se puede construir una sola consulta, pero ¿cómo puedo combinar 4?
Como los enfoques que he encontrado hasta ahora MultiSearch y Disyunción Max Consulta. MultiSearch parece que no admite la Paginación. Con respecto a la Disyunción Max Consulta podría ser que me estoy perdiendo el bosque por los árboles, pero no estoy luchando por tener las subconsultas ser ordenados aleatoriamente sólo dentro de sí mismos antes de añadir la una a la otra.
Aquí cómo escribir una sola consulta por ahora sin Disjunction Max Query
en caso de que ayuda a:
{
"query": {
"bool": {
"should": [
{
"term": {
"isPlayer": true
}
},
{
"term": {
"isEvil": true
}
}
]
}
}
}