发布于 2018-02-23 06:37:13
我在一家大型电子商务网站工作,该网站使用SQL Server全文搜索来实现这一点。从概念上讲,全文搜索引擎将生成一个ids列表,该列表将与b-tree索引连接以返回排序的结果。性能是可以接受的,但我们尽可能使用当时可用的最大硬件(80CPU、512 GB RAM等)。对于2000-2500万个文档,一个简单的全文查询(2-3个术语)的响应时间将在3-5秒范围内。这是为了历史数据。实时数据集(大约100万个文档)平均为200ms,分布范围很广。我们每秒能够处理150-200个查询。
我们最终放弃了SQL Server进行搜索,因为我们需要SQL Server不提供的其他全文功能,特别是对结果进行高度可调的相关性排序。我们研究了各种选择,最终选择了托管在aws上的elastic search。
Elastic search在功能上提供了实质性的改进。表现很棒。我们在aws上使用了4个xlarge实例。查询响应时间在150-175ms左右,而且非常一致。我们可以轻松地扩展/缩小节点数量,以保持性能与不同的负载量保持一致。
SQL Server仍然是记录系统。我们必须开发几个服务来将更改从SQL Server推送到ES (增量加载、批量加载等)。将SQL搜索逻辑转换为ES非常简单。
总而言之,如果您的数据库不能满足您的搜索需求,那么使用一个可以满足您的需求的工具(elasticsearch)。
https://stackoverflow.com/questions/48337746
复制相似问题