elasticsearch – 弹性搜索缓存和搜索产品?

我需要设计电子商务中的功能(考虑酒店预订网站)我们可以输入关键字/ 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可以让您更好地控制搜索.

您可以执行更复杂的搜索,例如根据关键字提供自定义权重并搜索结果.例如对于您搜索酒店的案例,您可以灵活地创建任何可能的过滤器,如定价类,带停车位,带阳台等等.

但最重要的是您需要从数据源构建索引,索引将为您的站点提供服务.无论何时在缓存中,只要对数据源进行查询,就会构建缓存.

点赞