2017-05-04 47 views
0

對於我的論文,我正在研究Elasticsearch和MongoDB的速度(下降到毫秒)。Elasticsearch'size:'vs MongoDB batch_size

我注意到,與MongoDB相比,Elasticsearch對於返回數據的速度和找到的總項目非常一致。在其他MongoDB需要較長時間返回數據的情況下,發現的結果越多,Elasticsearch的響應時間幾乎總是相同,無論發送的請求總量如何。

我的假設是,在Elasticsearch中,當使用size運算符時,在索引搜索完成後實際查找和檢索的文檔數量恰好是size運算符中設置的數量。在MongoDB中,情況並非如此,在MongoDB中,檢索到索引中匹配的所有文檔,並且根據遊標的batch_size和最終設置的最大限制(),最終只返回前X個數量。

除了花時間查看源代碼,弄清楚這個假設是否正確,或者如果有其他事情正在發生,我一定錯過了,我沒辦法。

感謝您花時間閱讀本文,任何反饋意見,將有助於我進一步研究。

回答

1

爲了讓Elasticsearch實際檢索結果更清楚些:它使用query then fetch

因此,如果您搜索N個結果,第一階段將查詢所涉及的所有碎片並返回包含分數和ID的N個結果列表 - 而不是其他信息。在第二階段,您通過其ID確定前N個全局結果。因此,您將獲取比您需要的更多分數和ID,但您只能獲取實際結果。

相關問題