因此,我们的生产环境具有一个ES群集,其中包含我们所有产品的 list (ID和属性),其中每个产品都映射到一个文档。在内部,我们的用例之一是根据一系列产品属性上的文本匹配,为这些产品创建逻辑分组。
通常,一个产品集可能包含很多产品,例如500万个。也就是说,创建产品集的查询可以匹配大约500万个文档。
现在,我的问题是,ES是否能够处理如此大量的文档检索,还是建议使用诸如Cassandra或HBase之类的后备存储来获取大量文档?请注意,我不关心实时用例-我可以异步执行产品集的创建,因此对我而言,延迟不是主要问题。据我了解,ES提供了Scroll API来检索大量文档,但是,我从一个学派的 Angular 来解决这个问题。
使用ES来获取5-10百万个非常大的文档是否合适?还是应该使用具有大数据功能的并行数据库来获取数据并将ES仅用作搜索存储?

最佳答案

TL; DR不,它不是要检索大量文档,尽管您可以使用不同的方法来解决。
请注意,滚动API might not be suitable for purposes other than re-indexing:

实现它的另一种方法是Search after parameter

重新考虑您的用例是否真的需要详尽地对大型文档进行分页。由于ElasticSearch的优势不在于大型结果集。
查阅文档:

  • Paginate search results
  • index.max_result_window
  • Track total hits
  • Scroll API
  • Search after parameter
  • 关于elasticsearch - ElasticSearch是否适合检索大量搜索记录?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/63689309/

    10-10 00:32