Вы можете сортировать, используя хэш-функцию уникального поля (например, id) и случайную соль.В зависимости от того, насколько случайными должны быть результаты, вы можете сделать что-то столь же примитивное, как:
{
"query" : { "query_string" : {"query" : "*:*"} },
"sort" : {
"_script" : {
"script" : "(doc['_id'].value + salt).hashCode()",
"type" : "number",
"params" : {
"salt" : "some_random_string"
},
"order" : "asc"
}
}
}
или что-то более сложное, например
{
"query" : { "query_string" : {"query" : "*:*"} },
"sort" : {
"_script" : {
"script" : "org.elasticsearch.common.Digest.md5Hex(doc['_id'].value + salt)",
"type" : "string",
"params" : {
"salt" : "some_random_string"
},
"order" : "asc"
}
}
}
Во втором примере будут получены более случайные результаты, нобудет несколько медленнее.
Чтобы этот подход работал, поле _id
должно быть сохранено.В противном случае запрос не будет выполнен с NullPointerException
.