用于缓存和搜索产品的弹性搜索?
Elastic search for caching and searching the product?
我需要像电子商务一样设计功能(考虑酒店预订网站)我们可以输入 keyword/partial-keyword 并需要 return 相关结果。
例如:- 如果站点管理员或酒店所有者需要在系统中添加以下酒店详细信息,它也会添加到缓存中(基本上它将通过缓存写入)。
Hotel-Name: New River
City: NewYork
Rating:4 Star
Rate($):500
我的问题是如何在系统中设计以下几点
- 我是否需要将酒店数据存储在缓存中,因为键值对可能正在使用 Redis 或 Memcache?键和值是什么?
- 如果我将其存储为键值对,我将如何使用部分关键字进行搜索(例如输入
river newyork
而不是 new river newyork
)
可以是部分酒店名称和城市的组合吗?
- 有什么可能的分片键来分配缓存中的数据?
认为这个系统的可扩展性与 Goibibo
一样。
我建议的解决方案:-
阅读以下两个资源后,看起来我可以使用 Elastic search(ES) 来解决上述所有三点问题。它会做的是:-
- 创建名称为 hotel_data 的索引,它将包含酒店 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 可以让您更好地控制搜索。
您可以执行更复杂的搜索,例如根据您的关键字提供自定义权重并搜索结果。例如对于酒店的案例搜索,您可以灵活地创建任何可能的过滤器,例如定价 Class、带停车位、带阳台...等。
但最主要的是您需要从您的数据源构建索引,该索引将为您的站点服务。在缓存中,每当您查询数据源时,您的缓存就会生成。
我需要像电子商务一样设计功能(考虑酒店预订网站)我们可以输入 keyword/partial-keyword 并需要 return 相关结果。 例如:- 如果站点管理员或酒店所有者需要在系统中添加以下酒店详细信息,它也会添加到缓存中(基本上它将通过缓存写入)。
Hotel-Name: New River
City: NewYork
Rating:4 Star
Rate($):500
我的问题是如何在系统中设计以下几点
- 我是否需要将酒店数据存储在缓存中,因为键值对可能正在使用 Redis 或 Memcache?键和值是什么?
- 如果我将其存储为键值对,我将如何使用部分关键字进行搜索(例如输入
river newyork
而不是new river newyork
) 可以是部分酒店名称和城市的组合吗? - 有什么可能的分片键来分配缓存中的数据?
认为这个系统的可扩展性与 Goibibo
一样。
我建议的解决方案:-
阅读以下两个资源后,看起来我可以使用 Elastic search(ES) 来解决上述所有三点问题。它会做的是:-
- 创建名称为 hotel_data 的索引,它将包含酒店 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 可以让您更好地控制搜索。
您可以执行更复杂的搜索,例如根据您的关键字提供自定义权重并搜索结果。例如对于酒店的案例搜索,您可以灵活地创建任何可能的过滤器,例如定价 Class、带停车位、带阳台...等。
但最主要的是您需要从您的数据源构建索引,该索引将为您的站点服务。在缓存中,每当您查询数据源时,您的缓存就会生成。