Eu sou bastante novo para elasticsearch (embora com um pouco de SQL experiência) e atualmente estou lutando com a colocação de uma consulta adequada juntos. Eu tenho 2 campos booleanos isPlayer
e isEvil
que uma entrada é true
ou false
em. Com base no que eu queira dividir a minha conjunto de dados em 4 grupos:
- isPlayer: true, isEvil: true
- isPlayer: true, isEvil: falso
- isPlayer: false, isEvil: true
- isPlayer: false, isEvil: falso
Estes grupos quero aleatoriamente de classificação, dentro de si, em seguida, anexá-los a ser um grande lista que eu possa paginar. Eu gostaria de fazer que, dentro da consulta, como parece ser o "correto" para fazer isso, desde que eu iria fazê-lo da mesma forma em SQL. Nessa lista, os grupos devem ser organizados em ordem, então, primeiro, todas as entradas do Grupo 1 em uma ordem aleatória, em seguida, todas as entradas do Grupo 2 em uma ordem aleatória, em seguida, todas as entradas do Grupo 3, etc. . É necessário que a aleatoriedade da classificação é reproduzível se dado as mesmas entradas, então, se a classificação é baseada no random_score
idealmente, eu gostaria de estar usando uma semente para a aleatoriedade.
Eu posso construir uma única consulta, mas como faço para combinar 4?
Como abordagens que encontrei até o momento MultiSearch e Disjunção Max Consulta. MultiSearch parece que ele não oferece suporte a Paginação. Relação de Disjunção Max Consulta pode ser que eu estou faltando a floresta para as árvores, mas eu estou lutando em ter subconsultas ser ordenados aleatoriamente apenas dentro de si antes de acrescentá-los um ao outro.
Aqui como eu escrever uma única consulta por agora sem Disjunction Max Query
no caso, ele ajuda a:
{
"query": {
"bool": {
"should": [
{
"term": {
"isPlayer": true
}
},
{
"term": {
"isEvil": true
}
}
]
}
}
}