我有一个简单的单字段索引,具有以下映射:
"search": {
"type": "string",
"index": "not_analyzed",
"store": true
}
它存储在5个分片中,有超过1000万个文档(每个文档约25字节),并且我有一个网页,可以通过以下查询对它们进行迭代:
GET /searches/_search
{
"query": {
"match_all": {}
},
"from": 1000000,
"size":100
}
以下是一些不合理的放慢速度的近似数据(左侧的“from”,右侧的时间以秒为单位):
0 -> 0.065
1.000 -> 0.065
10.000 -> 0.093
100.000 -> 0.560
1.000.000 -> 5.200
有没有可能的解决方案来获得恒定的执行时间?一些不可思议的查询或设置等。我在同一台计算机上还有3个索引(所有索引都包含数百万个文档),我不想维护另一个数据库只是为了正确地对这些数据进行分页。万一我应该迁移,..哪个数据库将胜任这项工作?
谢谢。
编辑:
当我说“iterates”时,我的意思是“paginates”。用户可以请求第10页,然后请求第1M页。我不是英语为母语的人,为您的错误感到抱歉。
最佳答案
这是Elasticsearch页面上的文本。
-> ojita
您必须对大型数据集使用滚动。这是Elasticsearch Page
关于database - ElasticSearch “match_all”的速度慢, “from”> 1M,+ 1000万个文档,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25149918/