我需要设计电子商务中的功能(考虑酒店预订网站)我们可以输入关键字/ partial-keyword并需要返回相关结果。 例如: - 如果网站管理员或酒店所有者需要在系统中添加以下酒店详细信息,它也将被添加到缓存中(基本上它将通过缓存写入)。
Hotel-Name: New River
City: NewYork
Rating:4 Star
Rate($):500
我的问题是如何在系统中设计以下几点
river newyork
而不是new river newyork
)
可以是部分酒店名称和城市的组合吗?将此系统视为可扩展为Goibibo
。
我建议的解决方案: -
在阅读下面两个资源之后,看起来我可以对上面提到的所有三个点使用弹性搜索(ES)。它将做的是: -
链接
elasticsearch-from-the-bottom-up
elasticsearch-hello-world-example
但是当我用CTO讨论这种方法时,他告诉你正在混合弹性搜索和弹性缓存,并说弹性搜索可以用于搜索和 用于缓存的弹性缓存。
但是当我再次阅读这些资源时,我发现弹性搜索用于缓存和搜索。所以我发现我的方法没有错。 我的方法有什么用吗?
答案 0 :(得分:1)
Elasticsearch 可用作缓存或搜索引擎。默认情况下,elasticsearch索引数据是持久性文件系统(文件系统),您也可以为memorymap配置
有关各种文件系统存储类型,请参阅以下内容 https://www.elastic.co/guide/en/elasticsearch/reference/6.3/index-modules-store.html
ElastiCache 是Amazon(AWS)提供的内存中数据存储服务,可用于缓存。
您建议的选择 Elasticsearch 的解决方案是一个不错的选择,因为它是开源的,可以在内部使用,也可以使用云服务。与像Redis这样的缓存框架相比,Elasticsearch将使您对搜索有更多控制。
您可以进行更复杂的搜索,例如根据关键字指定自定义权重并搜索结果。例如对于您搜索酒店的案例,您可以灵活地创建任何可能的过滤器,例如定价类,带停车位,带阳台...等。
但是最主要的是您需要从数据源构建索引,并且该索引将为您的站点提供服务。每当您对数据源进行查询时,都会在高速缓存中建立缓存的位置。