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