Sorting Elasticsearch无序索引排序
提前谢谢。我先暴露情况,最后给出解决方案 我收集了200万份文档,其中包含以下映射:Sorting Elasticsearch无序索引排序,sorting,lucene,
elasticsearch,shuffle,Sorting,Lucene,
elasticsearch,Shuffle,提前谢谢。我先暴露情况,最后给出解决方案 我收集了200万份文档,其中包含以下映射: { "image": { "properties": { "timestamp": { "type": "date", "format": "dateOptionalTime" }, "title": { "type": "string" },
{
"image": {
"properties": {
"timestamp": {
"type": "date",
"format": "dateOptionalTime"
},
"title": {
"type": "string"
},
"url": {
"type": "string"
}
}
}
}
我有一个网页,通过以下搜索对所有文档进行分页:
{
"from":STARTING_POSITION_NUMBER,
"size":15,
"sort" : [
{ "_id" : {"order" : "desc"}}
],
"query" : {
"match_all": {}
}
}
{
"from":STARTING_POSITION_NUMBER,
"size":15,
"query" : {
"function_score": {
"random_score": {
"seed" : 1
}
}
}
}
点击如下所示(注意_id值是url的散列,以防止重复文档):
这很有效。我唯一的问题是文档按时间顺序排列(最早的文档出现在第一页,最近索引的文档出现在最后一页),但我希望它们以随机顺序出现。例如,第10页应始终显示相同的N个文档,但它们不必按日期排序
我想到了一些类似于按照散列对所有文档进行排序的事情,这是一种随机的、确定性的。我怎么做呢
我在文档上搜索过,排序api只用于对结果进行排序,而不是对完整索引进行排序。如果我没有找到解决方案,我会随机挑选文档,并在单独的集合中为它们编制索引
谢谢。我通过以下搜索解决了这个问题:
{
"from":STARTING_POSITION_NUMBER,
"size":15,
"sort" : [
{ "_id" : {"order" : "desc"}}
],
"query" : {
"match_all": {}
}
}
{
"from":STARTING_POSITION_NUMBER,
"size":15,
"query" : {
"function_score": {
"random_score": {
"seed" : 1
}
}
}
}
感谢Elasticsearch邮件列表中的David指出了随机评分的功能评分