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

3
我正在参与一个项目,我们正试图引入一个搜索框架。我们即将开始开发,目前我们只做了一些 poc 工作。我们正在为硬件估算而苦苦挣扎。我不确定我们的性能要求是否可以使用单个服务器设置来满足,或者我们需要选择复制或分布式解决方案。
以下是我们的主要要求:
- 在半结构化数据中搜索 - 文档包含15个字段,所有这些字段都应该可搜索 - 大多数是数字 ID - 日期 - 名字 - 索引中有1000万篇文档 - 每分钟以批处理方式进行30-40次更新 - 对于100多个查询每分钟使用几个布尔运算符进行<100毫秒的响应时间搜索
问题:
1)在单个服务器设置上实现这种性能可行吗?
2)如果不行,那么满足性能要求的适当设置是什么?
3)我们正在考虑在 Lucene 之上使用多种框架,其中包括 Solr 和 Zoie。哪种分布式架构是必要的,以处理所述的负载和性能要求。
2个回答

3

1) 在单台服务器上实现这种性能可行吗?

是的,我认为可以。但这是一种“边缘”情况(希望你知道我的意思)你需要足够的RAM和CPU功率。最终还取决于“大”字段的大小,例如全文或其他字段以及数据库的大小。

相比之下,我使用lucene处理120万个文档、7个字段,主要是短字段(日期、数字等),但也包括一个大的文本字段(500-5000个字符)。这个mysql数据库的大小(由lucene索引)为1-2 GB。该系统在一个小型单CPU VMware主机上运行,配备4GB内存。全文搜索结果返回时间为100-400毫秒。 如果没有大的文本字段,搜索结果会更快。(取决于搜索类型,例如分面搜索)例如:对char(255)字段进行分面搜索,返回时间小于70毫秒。

可能对于你的配置,一台非可视化硬件,具有大量内存(>32GB)和>8个核心将是有用的。

每分钟批量更新30-40次

这是指每分钟新增30-40个文档吗?那没问题!每分钟更新30-40次,且有大量新文档则会更具挑战性。此外,你应该定期优化索引(例如每晚)。

3) 我们正在考虑在Lucene之上使用几个框架,其中包括Solr和Zoie。

Solr作为一个tomcat应用程序运行。在这里,你需要定义分配给搜索引擎的RAM(请参见上文)。有不同的可能性来拆分索引(以获得更好的性能或更快的更新),也可以进行集群。


0

如果您需要满足“单服务器”要求,建议您考虑使用ElasticSearch。因为它非常适合近实时更新。

使用Solr也可以获得类似的性能,但是在单节点上混合get/updates请求时,Solr会出现问题。将其分割成2个或更多节点——主/从节点,您将获得与ElasticSearch相似的性能,但在单个节点上则不行。

请参考http://blog.socialcast.com/realtime-search-solr-vs-elasticsearch/以获取更详细的信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接