前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【ES三周年】实现一个简单的推荐业务

【ES三周年】实现一个简单的推荐业务

原创
作者头像
Nian糕
发布2023-02-14 15:21:22
4270
发布2023-02-14 15:21:22
Unsplash
Unsplash

Elasticsearch(简称ES)是一种流行的搜索和分析引擎,用于在大规模数据集中执行实时搜索和分析。在实践中,ES被广泛用于日志分析、全文搜索、数据分析、业务监控等领域,我们所熟知的美团点评也在利用 ES 来解决各种搜索需求,提高搜索结果的相关性,分析用户行为数据,提高服务的质量和用户体验,以及增加平台的稳定性和安全性,下面是美团点评使用ES的几个具体业务场景:

  • 搜索业务:利用ES来实现各种搜索需求,包括搜索商户、优惠券、团购等,ES的强大搜索能力和实时性让用户能够更快地找到所需的信息,并提高搜索结果的相关性
  • 推荐业务:通过对用户行为数据的分析和处理,能够对用户进行商户、优惠券、团购等推荐,这些推荐结果基于用户的历史行为和搜索行为,以及当前搜索条件,ES通过算法计算并返回最相关的结果
  • 数据分析:通过分析用户行为数据和商户数据,可以了解用户的偏好和商户的实时状态,以提高服务的质量和用户体验
  • 监控告警:为了确保平台的稳定性和安全性,通过将各种指标数据(如QPS、错误率、响应时间等)存储在ES中,并与实时日志数据结合起来,可以快速检测到异常并进行处理

下面是一个基本的推荐业务代码框架,具体的实现和分析方法需要根据业务场景和数据特点进行调整

a. 定义需要查询的索引和字段

代码语言:txt
复制
const index = "nian_gao_index";
const docType = "nian_gao_doc_type";
const fields = ["field1", "field2", "field3"];

b. 通过ES的mget API,根据文档ID批量获取文档

代码语言:txt
复制
const result = await client.mget({
    index: index,
    type: docType,
    body: {
        ids: docIds,
        _source: fields
    }
});

c. 对获取到的文档进行分析,并计算出相关性得分

代码语言:txt
复制
const scores = {};

result.docs.forEach((doc) => {
    // 分析文档,计算相关性得分
    scores[doc._id] = getScore(doc);
});

// 按得分从高到低排序
const sortedIds = Object.keys(scores).sort((a, b) => scores[b] - scores[a]);

d. 返回排序后的文档ID列表

代码语言:txt
复制
return sortedIds;

总之,ES作为一种流行的搜索和分析引擎,在各个领域都得到了广泛应用,无论是大规模的数据集还是日志数据,ES都能够提供可扩展的、实时的搜索和分析解决方案,腾讯云提供的ES服务,使得用户可以轻松地将ES集成到其现有的架构中,并获得高效、可靠的搜索和分析能力

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
智能数据分析
腾讯云智能数据分析 Intellectual Data Analysis 是新一代云原生大数据敏捷分析解决方案。产品具备存算分离、动态扩缩容等特点,并内置事件、转化、留存、行为路径等成熟分析模型,提供高可用、低成本的全场景敏捷分析服务,可同时满足数据分析师、数据开发工程师和业务决策人的关键分析需求,帮助企业大幅降低数据分析成本,支撑业务更高效决策。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档