performance - Lucene (Solr/Zoie/Elasticsearch) 设置的硬件要求

标签 performance lucene solr hardware

我正在做一个项目,我们正在尝试引入一个搜索框架。我们即将开始开发,到目前为止我们只做了一些 poc-work。我们正在努力估算硬件。我不确定使用单个服务器设置是否可以满足我们的性能要求,或者我们是否需要采用复制或分布式解决方案。

这是我们的主要要求

  • 在半结构化数据中搜索
    • 文档包含 15 个字段,所有字段都应该是可搜索的
    • 主要是数字 id 的
    • 日期
    • 名字
  • 索引中有超过 1000 万个文档
  • 30-40 次更新,每分钟分批
  • <100 毫秒响应时间使用多个 bool 运算符搜索每分钟 100 多个查询

问题

1) 在单一服务器设置上获得这种性能是否可行?

2) 如果不是,什么是满足性能要求的适当设置。

3) 我们正在考虑基于 Lucene 的几个框架,其中包括 Solr 和 Zoie。处理描述的负载和性能要求需要什么样的分布式架构。

最佳答案

1) Is it feasible to get this performance on a singleserver setup?

是的,我想是的。但这是一种“边界线”(我希望你知道,我的意思) 您需要的是足够的 RAM 和 CPU 能力。 Finlay 它取决于“大”文件的大小,如全文和数据库的大小。

相比之下,我将 lucene 与 120 万个文档、7 个文件一起使用,其中大部分是短文件(日期、数字等),但也包括一个大文本字段(500-5000 个字符)。这个 mysql 数据库(由 lucene 索引)的大小为 1-2 GB。该系统在具有 4GB RAM 的小型单 CPU VMware 主机上运行。全文搜索结果在 100-400 毫秒内返回。 如果您没有大文本字段,您的结果返回速度会更快。 (取决于搜索的种类 -> 例如 facettet 搜索) 例如:对 char(255) 文件的分面搜索,在 <70 毫秒内返回

对于您的配置,具有大量内存 (>32GB) 和 >8 核的非可视化硬件可能会很有用。

30-40 updates, in batches every minute

这是否意味着每分钟 30-40 个新文档?那没问题! 每分钟 30-40 次更新并包含大量新文档将更具挑战性。 另外你应该定期优化你的索引(例如每晚)

3) We are considering several frameworks on top of Lucene, amongst them Solr and Zoie.

Solr 作为 tomcat 应用程序运行。在这里您必须定义分配给您的搜索引擎的 RAM(见上图)。 拆分索引有不同的可能性(以获得更高的性能或更快的更新),也可以进行集群。

关于performance - Lucene (Solr/Zoie/Elasticsearch) 设置的硬件要求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5866749/

相关文章:

c# - C# 方法是否占用内存?

python - 在 Python 中与集合相交的最有效方法是什么?

java - 在 Lucene 3.5.0 中禁用 ConcurrentMergeScheduler

lucene - 如何在 Solr 中重新加载同义词.txt?

django - 什么是基于模型的搜索?

SolrCloud ZooKeeper 配置更新

python - 在 mongodb 中查询大列表的最快方法

lucene - Lucene 和 Lucene.Net 中的俄语分析器

使用 Solr 和 tomcat 进行 Java 编码

java - 哪个 Java Profiler 更好 : JProfiler or YourKit?