随机顺序和分页Elasticsearch
在此问题中,
有一个功能要求,要求使用可选种子进行订购,以允许随机订购。
我需要能够对随机排序的结果进行分页。用Elasticsearch 0.19.1怎么做?
谢谢。
回答:
您可以使用唯一字段(例如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
。
以上是 随机顺序和分页Elasticsearch 的全部内容, 来源链接: utcz.com/qa/428771.html