我有一个静态网站,需要对单独的数据集进行搜索;我目前正在使用无服务器技术在AWS上托管站点,包括用于某些服务器端逻辑的S3,Cloudfront,Lambda和API网关。
我有几个csv文件,其中包含约120,000条记录,其结构如下:
ID search_name name source quantity
10002 Lorem Ipsum Dolor sit amet primary_name 10
10002 Lorem Ipsum Consectetur amet other_name 10
10002 Lorem Ipsum Donec a erat other_name 10
10003 Ultricies pretium Inceptos primary_name 100
10003 Ultricies pretium Himenaeos other_name 100
因此,最终结果将是前端的搜索表单,该表单将对后端系统进行API调用,该后端系统查询能够与'search_name'字段进行字符串匹配的数据库或单独的软件服务;然后返回所有匹配项。我的前端将在结果中而不是单独的结果中将带有“源”和“其他名称”的记录显示为元数据。
每3个月将提供一组新的CSV文件,其中将包含相同的内容和其他记录,但“数量”字段可能具有新值。
由于我一直在使用无服务器技术,所以我最初的想法是尝试将文件存储在一个s3存储桶,使用AWS胶水对其进行处理,并将其提供给AWS Athena进行查询。我很喜欢这种设置,因为不需要维护很多组件,而且托管成本也很低。我对这种设置的两个担心是,我将花时间尝试设计一个不错的搜索算法,该算法可以根据如何对结果进行排序结束一场比赛。例如。如果搜索名称是ABC,则它应该是第一个结果,而不是其他仅以ABC作为其名称一部分的项目。其次执行速度;我已经运行了一些简单的查询,例如:
SELECT id, search_name, source FROM data WHERE search_name like '%lorem%';
只需在Athena GUI中使用查询编辑器,执行时间就可以在0.5到3秒之间。这是我关心的那三秒处决。我想知道这有多好。我还读过“用户一次只能提交一个查询,并且每个帐户最多只能同时运行五个查询。”,除非我对此有所了解,听起来好像对我来说很致命。
作为第二个选择,我正在考虑使用AWS ElasticSearch。我对此一无所知,但我发现使用专为执行搜索而设计的系统可能会使我的最终产品更好。我对实现它的了解不多,但是我在这里的担心仍然是我对某些搜索结果进行优先排序的能力,以及执行该数据注入过程的难易程度,例如当一组新的数据到达时,它需要更新记录,而不是仅仅堆叠在它们之上。我编写了一个初始脚本以在其中加载csv记录以测试查询。
我现在才开始看AWS CloudSearch,它实际上看起来比ElasticSearch简单一些,因此开始采用这种方式。
因此,我正在寻找的建议是关于我应该使用哪些产品或服务的建议,无论是Athena,ElasticSearch还是其他东西,以及有关如何实现这些服务的任何顶级建议。
谢谢。
我有一个静态网站,需要对单独的数据集进行搜索;我目前正在AWS上使用无服务器技术托管该站点,包括S3,Cloudfront,Lambda和API网关,用于某些...
只需在Athena GUI中使用查询编辑器,执行时间就可以在0.5到3秒之间。这是我关心的那三秒处决。我想知道这有多好。我还读过“用户一次只能提交一个查询,并且每个帐户最多只能同时运行五个查询。”,除非我对此有所了解,听起来好像对我来说很致命。