随机顺序和分页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

回到顶部