Elasticsearch的用例:灵活的查询缓存

在前两篇有关Elasticsearch用例的文章中,我们已经看到Elasticsearch 可用于存储甚至大量文档 ,并且我们可以通过Query DSL使用Lucene的全文功能访问那些 文档 。 在这篇较短的文章中,我们将把两个用例放在一起,以了解读取繁重的应用程序如何从Elasticsearch中受益。

经典应用中的搜索引擎

看着经典的应用程序,搜索引擎是一种专门的东西,它只负责帮助一个功能,即搜索页面。


搜索页面设置

在左侧我们可以看到我们的应用程序,其大部分功能是通过查询数据库来构建的。 搜索引擎只占很小的一部分,并负责呈现搜索页面。

数据库非常适合许多类型的应用程序,但事实证明,扩展它们通常并不那么容易。 流量高峰的网站通常在扩展数据库访问方面遇到一些问题。 对机器进行索引和按比例缩放可以提供帮助,但通常需要专门的知识,并且可能变得非常昂贵。

与其他搜索功能一样,电子商务提供商尤其开始做一些不同的事情。 他们开始将搜索引擎不仅用于全文搜索,而且还用于页面的其他部分,无需用户直接输入关键字。 再次让我们看一下亚马逊上的页面。

亚马逊缓存

这是可以使用导航访问的类别页面之一。 我们已经可以看到界面看起来与搜索结果页面非常相似。 有一个结果列表,我们可以使用构面对结果进行排序和过滤。 尽管我当然不了解亚马逊如何做到这一点,但通用的方法是也将搜索引擎用于此类页面。

扩展读取请求

电子商务网站的一个常见问题是流量激增。 根据您的业务类型,圣诞节前您可能会有更多的流量。 否则,当有电视广告为您服务或提供任何特殊折扣时,您可能不得不应对峰值问题。 闪购网站位于此类网站的末端,在开始销售的某个时间点,它们的峰值非常高。

事实证明,搜索引擎擅长于被查询很多。 不变的数据集(段)非常易于缓存。 当涉及到过滤器时,大多数情况下引擎也可以将其缓存。 在温暖的索引下,大多数数据将存储在RAM中,因此闪电般快。

回到我们可以在线访问的演讲示例。 想象一下一个导航,用户可以在其中选择要查看其事件的城市。 然后,您可以向Elasticsearch发出这样的查询:

curl -XPOST "http://localhost:9200/conferences/_search " -d'
{
    "filter": {
        "term": {
           "conference.city": "stuttgart"
        }
    }
}'

没有查询部分,只有一个过滤器将结果限制为斯图加特的对话。 整个筛选器将被缓存,因此,如果许多用户正在访问数据,则可以为您尤其是您的用户带来巨大的性能提升。

此外,我们已经看到可以将新节点添加到Elasticsearch中而没有太多麻烦。 如果我们需要更多的查询能力,我们可以轻松地添加更多计算机和更多副本,甚至是临时添加。 当我们确定一些可以移到搜索引擎的页面时,数据库不再需要那么多流量。

搜索引擎作为缓存

特别是为了控制巨大的峰值,最好不要再访问已读取大量页面的数据库,并从搜索引擎提供所有内容。

结论

尽管在这篇文章中我们已经研究了电子商务,但是相同的策略可以应用于不同的领域。 内容管理系统可以将社论内容推送到搜索引擎,并让其负责扩展。 分类广告,社交媒体聚合…。 所有这些都可以从搜索引擎的缓存友好特性中受益。 也许您甚至会注意到部分数据根本不需要位于数据库中,您可以将它们作为主要数据存储迁移到Elasticsearch。 迈向多语言持久性的第一步。

翻译自: https://www.javacodegeeks.com/2014/07/use-cases-for-elasticsearch-flexible-query-cache.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值