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

时间:2018-06-15 17:01:02

标签: elasticsearch caching search e-commerce

我需要设计电子商务中的功能(考虑酒店预订网站)我们可以输入关键字/ partial-keyword并需要返回相关结果。 例如: - 如果网站管理员或酒店所有者需要在系统中添加以下酒店详细信息,它也将被添加到缓存中(基本上它将通过缓存写入)。

Hotel-Name: New River       
City: NewYork         
Rating:4 Star
Rate($):500

我的问题是如何在系统中设计以下几点

  1. 我是否需要将酒店数据存储在缓存中,因为键值对可能正在使用Redis或Memcache?什么是关键和价值?
  2. 如果我将其存储为键值对,我将如何使用部分关键字进行搜索(例如输入river newyork而不是new river newyork) 可以是部分酒店名称和城市的组合吗?
  3. 在缓存中分发数据的分片密钥是什么?
  4. 将此系统视为可扩展为Goibibo

    我建议的解决方案: -

    在阅读下面两个资源之后,看起来我可以对上面提到的所有三个点使用弹性搜索(ES)。它将做的是: -

    1. 创建名称为hotel_data的索引,其中包含hotel json文档所有可搜索字段的索引
    2. ES会将索引存储在内存中
    3. 然后我可以搜索search partial words
    4. 之类的部分字词

      链接

      elasticsearch-from-the-bottom-up

      elasticsearch-hello-world-example

      但是当我用CTO讨论这种方法时,他告诉你正在混合弹性搜索和弹性缓存,并说弹性搜索可以用于搜索和 用于缓存的弹性缓存。

      但是当我再次阅读这些资源时,我发现弹性搜索用于缓存和搜索。所以我发现我的方法没有错。 我的方法有什么用吗?

1 个答案:

答案 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将使您对搜索有更多控制。

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

但是最主要的是您需要从数据源构建索引,并且该索引将为您的站点提供服务。每当您对数据源进行查询时,都会在高速缓存中建立缓存的位置。