ElasticSearch" match_all" "来自" > 1M带有+ 10M文档

时间:2014-08-05 23:25:38

标签: database elasticsearch bigdata

我有一个简单的单字段索引,其中包含以下映射:

"search": {
  "type": "string",
  "index": "not_analyzed",
  "store": true
}

它存储在5个分片中,并且有超过10M的文档(每个大约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个索引(都有数百万个文件),我不想维护另一个数据库只是为了通过这些数据正确分页。如果我应该迁移,..哪个数据库对这项工作有好处?

感谢。

修改 当我说“迭代”时,我的意思是“分页”。用户可以请求第10页,然后突然显示第1M页。我不是母语为英语的人,对这些错误感到抱歉。

1 个答案:

答案 0 :(得分:1)

以下是Elasticseach页面的文字。

  

与来自和大小的深度分页 - 例如?大小= 10安培;从= 10000 - 是   非常低效(在这个例子中)100,000个排序结果必须   从每个碎片中检索并使用,以便仅返回10   结果。必须对每个请求的页面重复此过程。

- > Elasticsearch Page

您必须使用滚动来处理大型数据集。这是link.