我有一个简单的单字段索引,具有以下映射:

"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/

10-11 08:39