【问题标题】:Elastic search for caching and searching the product?用于缓存和搜索产品的弹性搜索?
【发布时间】:2018-11-25 13:20:05
【问题描述】:

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

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

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

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

将此系统视为可扩展为 Goibibo

我提出的解决方案:-

阅读下面的两个资源后,看起来我可以使用 Elastic search(ES) 来解决上面提到的所有三点。它会做的是:-

  1. 创建名称为 hotel_data 的索引,该索引将包含酒店 json 文档的所有可搜索字段的索引
  2. ES 会将索引存储在内存中
  3. 然后我可以搜索像search partial words这样的部分词

链接

elasticsearch-from-the-bottom-up

elasticsearch-hello-world-example

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

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

【问题讨论】:

标签: elasticsearch caching search e-commerce


【解决方案1】:

Elasticsearch 可以用作缓存或搜索引擎。默认elasticsearch索引数据是持久化的(文件系统),你也可以为memorymap配置它

请参阅下面的各种文件系统存储类型 https://www.elastic.co/guide/en/elasticsearch/reference/6.3/index-modules-store.html

ElastiCache 是 Amazon (AWS) 提供的一种内存数据存储服务,可用于缓存。

您提出的选择 Elasticsearch 的解决方案是一个不错的选择,因为它是开源的,可以在本地使用,也可以使用云服务。与 Redis 等缓存框架相比,Elasticsearch 可以让您更好地控制搜索。

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

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

【讨论】:

  • @sanhosh 你说But the main thing is you need to build the index from your datasource and the index would serve your site一旦在DB中创建数据,我们就可以在Elasticsearch下建立索引
  • 绝对@emily 它完全取决于我们如何根据要求构建我们的应用程序。您可以将数据直接放入 es 或从 DB 构建 es 索引。
猜你喜欢
  • 1970-01-01
  • 2014-08-26
  • 2018-10-26
  • 1970-01-01
  • 1970-01-01
  • 2021-11-23
  • 2013-12-12
  • 2012-11-13
  • 2018-04-25
相关资源
最近更新 更多