【问题标题】:Elasticsearch 'size:' vs MongoDB batch_sizeElasticsearch 'size:' vs MongoDB batch_size
【发布时间】:2017-05-04 13:52:41
【问题描述】:

对于我的论文,我目前正在研究 Elasticsearch 和 MongoDB 的速度(低至毫秒)。

我注意到,与 MongoDB 相比,Elasticsearch 在返回数据的速度和找到的总项目数方面非常一致。在其他 MongoDB 需要更长的时间返回数据的情况下,找到的结果越多,Elasticsearch 的响应时间几乎总是相同的,无论发送的请求总量如何。

我的假设是,在 Elasticsearch 中,当使用 size 运算符时,在索引中搜索完成后实际查找和检索的文档数量正是 size 运算符中设置的数量。在 MongoDB 中情况并非如此,在 MongoDB 中,检索到索引中匹配的所有文档,并且最终根据游标的 batch_size 和最终设置的 max limit() 仅将前 X 数量返回给客户端。

除了花几个小时查看源代码之外,我没有其他办法来确定这个假设是否正确,或者是否发生了我一定错过的其他事情。

感谢您抽出宝贵时间阅读本文,感谢您的任何回复,并将帮助我进一步研究。

【问题讨论】:

    标签: mongodb elasticsearch


    【解决方案1】:

    为了更清楚地说明 Elasticsearch 实际检索结果的方式:它使用 query then fetch

    因此,如果您搜索 N 个结果,第一阶段将查询所有涉及的分片并返回其 N 个结果的列表,其中包含分数和 ID,而不是其他信息。在第二阶段,您按 ID 获取前 N 个全局结果。因此,您将检索到比您需要的更多的分数和 ID,但您只会获取实际结果。

    【讨论】:

      猜你喜欢
      • 2018-03-10
      • 1970-01-01
      • 2019-11-08
      • 1970-01-01
      • 1970-01-01
      • 2020-02-10
      • 1970-01-01
      • 2018-05-09
      • 1970-01-01
      相关资源
      最近更新 更多