ElasticSearch-Hadoop:从Hadoop到ElasticSearch的产品视图计数索引和客户顶部搜索查询...

这篇文章涵盖了如何使用ElasticSearch-Hadoop从Hadoop系统读取数据并在ElasticSearch中对其进行索引。 它涵盖的功能是在最近n天中为每个客户的产品浏览量计数和热门搜索查询编制索引。 分析的数据可以进一步在网站上使用,以显示最近浏览过的客户,产品浏览次数和热门搜索查询字符串。

继续之前的文章

  • 客户产品搜索使用大数据进行点击分析 ,
  • Flume:使用Apache Flume收集客户产品搜索点击数据 ,
  • Hive:使用Apache Hive查询客户最喜欢的搜索查询和产品视图计数 。

我们已经有使用Flume收集并存储在Hadoop HDFS和ElasticSearch中的客户搜索点击数据,以及如何使用Hive分析相同数据并生成统计数据。 在这里,我们将进一步了解如何使用分析后的数据来增强网站上的客户体验并使之与最终客户相关。

最近浏览过的商品

我们已经在第一部分中介绍了如何使用水槽ElasticSearch接收器将最近查看的商品目录索引到ElasticSearch实例,以及如何使用数据为客户显示实时点击的商品。

弹性搜索-Hadoop

Elasticsearch for Apache Hadoop允许Hadoop作业通过小型库和易于设置的方式与ElasticSearch进行交互。

Elasticsearch-hadoop-hive,允许使用Hive访问ElasticSearch。 正如上一篇文章中所分享的那样,我们在Hive表中提取了产品视图计数以及客户排名最高的搜索查询数据。 我们将读取相同的数据并将其索引到ElasticSearch,以便将其用于网站上的显示目的。

elasticsearch-hadoop-hive

产品视图计数功能

采取一个方案来显示客户在最近n天中的每个产品总观看次数。 为了获得更好的用户体验,您可以使用相同的功能向最终客户显示其他客户对同一产品的看法。

蜂房数据用于产品视图

从配置单元表中选择示例数据:

# search.search_productviews : id, productid, viewcount
61, 61, 15
48, 48, 8
16, 16, 40
85, 85, 7

产品视图计数索引

创建Hive外部表“ search_productviews_to_es”以将数据索引到ElasticSearch实例。

Use search;
DROP TABLE IF EXISTS search_productviews_to_es;
CREATE EXTERNAL TABLE search_productviews_to_es (id STRING, productid BIGINT, viewcount INT) STORED BY 'org.elasticsearch.hadoop.hive.EsStorageHandler' TBLPROPERTIES('es.resource' = 'productviews/productview', 'es.nodes' = 'localhost', 'es.port' = '9210', 'es.input.json' = 'false', 'es.write.operation' = 'index', 'es.mapping.id' = 'id', 'es.index.auto.create' = 'yes');
INSERT OVERWRITE TABLE search_productviews_to_es SELECT qcust.id, qcust.productid, qcust.viewcount FROM search_productviews qcust;
  • 创建外部表search_productviews_to_es指向ES实例
  • 使用的ElasticSearch实例配置为localhost:9210
  • 索引“ productviews”和文档类型“ productview”将用于索引数据
  • 如果索引和mappin不存在,则会自动创建
  • 如果基于ID字段已经存在,则插入覆盖将覆盖数据。
  • 通过从另一个存储分析/统计数据的配置表“ search_productviews”中选择数据来插入数据。

执行Java中的Hive脚本以索引产品视图数据HiveSearchClicksServiceImpl.java

Collection<HiveScript> scripts = new ArrayList<>();HiveScript script = new HiveScript(new ClassPathResource("hive/load-search_productviews_to_es.q"));scripts.add(script);hiveRunner.setScripts(scripts);hiveRunner.call();

productviews索引样本数据

ElasticSearch索引中的样本数据存储如下:

{id=48, productid=48, viewcount=10}
{id=49, productid=49, viewcount=20}
{id=5, productid=5, viewcount=18}
{id=6, productid=6, viewcount=9}

客户热门搜索查询字符串功能

以一种情况为例,您可能希望显示单个客户或网站上所有客户的热门搜索查询字符串。 您可以使用它来显示网站上的热门搜索查询云。

Hive Data用于客户热门搜索查询

从配置单元表中选择示例数据:

# search.search_customerquery : id, querystring, count, customerid
61_queryString59, queryString59, 5, 61
298_queryString48, queryString48, 3, 298
440_queryString16, queryString16, 1, 440
47_queryString85, queryString85, 1, 47

客户热门搜索查询索引

创建Hive外部表“ search_customerquery_to_es”以将数据索引到ElasticSearch实例。

Use search;
DROP TABLE IF EXISTS search_customerquery_to_es;
CREATE EXTERNAL TABLE search_customerquery_to_es (id String, customerid BIGINT, querystring String, querycount INT) STORED BY 'org.elasticsearch.hadoop.hive.EsStorageHandler' TBLPROPERTIES('es.resource' = 'topqueries/custquery', 'es.nodes' = 'localhost', 'es.port' = '9210', 'es.input.json' = 'false', 'es.write.operation' = 'index', 'es.mapping.id' = 'id', 'es.index.auto.create' = 'yes');
INSERT OVERWRITE TABLE search_customerquery_to_es SELECT qcust.id, qcust.customerid, qcust.queryString, qcust.querycount FROM search_customerquery qcust;
  • 创建外部表search_customerquery_to_es指向ES实例
  • 使用的ElasticSearch实例配置为localhost:9210
  • 索引“ topqueries”和文档类型“ custquery”将用于索引数据
  • 如果索引和mappin不存在,则会自动创建
  • 如果基于ID字段已经存在,则插入覆盖将覆盖数据。
  • 通过从另一个存储分析/统计数据的配置单元表“ search_customerquery”中选择数据来插入数据。

在Java中执行Hive脚本以索引数据HiveSearchClicksServiceImpl.java

Collection<HiveScript> scripts = new ArrayList<>();HiveScript script = new HiveScript(new ClassPathResource("hive/load-search_customerquery_to_es.q"));scripts.add(script);hiveRunner.setScripts(scripts);hiveRunner.call();

topqueries索引样本数据

ElasticSearch实例上的topqueries索引数据如下所示:

{id=474_queryString95, querystring=queryString95, querycount=10, customerid=474}
{id=482_queryString43, querystring=queryString43, querycount=5, customerid=482}
{id=482_queryString64, querystring=queryString64, querycount=7, customerid=482}
{id=483_queryString6, querystring=queryString6, querycount=2, customerid=483}
{id=487_queryString86, querystring=queryString86, querycount=111, customerid=487}
{id=494_queryString67, querystring=queryString67, querycount=1, customerid=494}

上面描述的功能只是示例功能,当然需要扩展以映射到特定的业务场景。 这可能涵盖在网站上向客户显示搜索查询云或进一步进行商务智能分析的业务场景。

Spring数据

还包括用于测试目的的Spring ElasticSearch来创建ESRepository以对总记录进行计数并删除All。
检查服务以获取详细信息ElasticSearchRepoServiceImpl.java

产品总观看次数:

@Document(indexName = "productviews", type = "productview", indexStoreType = "fs", shards = 1, replicas = 0, refreshInterval = "-1")
public class ProductView {@Idprivate String id;@Versionprivate Long version;private Long productId;private int viewCount;......}public interface ProductViewElasticsearchRepository extends ElasticsearchCrudRepository<ProductView, String> { }long count = productViewElasticsearchRepository.count();

客户热门搜索查询:

@Document(indexName = "topqueries", type = "custquery", indexStoreType = "fs", shards = 1, replicas = 0, refreshInterval = "-1")
public class CustomerTopQuery {@Idprivate String id;@Versionprivate Long version;private Long customerId;private String queryString;private int count;......}public interface TopQueryElasticsearchRepository extends ElasticsearchCrudRepository<CustomerTopQuery, String> { }long count = topQueryElasticsearchRepository.count();

在以后的文章中,我们将介绍使用计划的作业进一步分析数据,

  • 使用Oozie计划针对配置单元分区进行协调的作业,并将作业捆绑以将数据索引到ElasticSearch。
  • 使用Pig来计算唯一客户总数等

翻译自: https://www.javacodegeeks.com/2014/05/elasticsearch-hadoop-indexing-product-views-count-and-customer-top-search-query-from-hadoop-to-elasticsearch.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/367366.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

伸缩轨道_深度解析——伸缩喷漆房为什么这么受欢迎!

伸缩式喷漆房是一种环保喷漆设备&#xff0c;它可以在使用时&#xff0c;自动展开形成封闭或半封闭的环保喷漆房&#xff0c;不使用时收缩合拢到一处的特殊环保喷漆房设备&#xff0c;由于伸缩式喷漆房外观大方、简单实用且投资费用低&#xff0c;它在现代涂装应用中越发广泛。…

snippet,让你编码效率翻倍

为什么谈到Snippet 今天下午在用vscode做小程序的时候&#xff0c;发现很不方便&#xff0c;因为商店里提供的代码片段极为有限&#xff0c;而且平时几乎每天都需要用到代码片段&#xff0c;所以就在思考他们是怎么做到给别人提供代码的&#xff0c;我可以自定义代码片段吗。然…

键盘keydown值表

键盘名称键值&#xff08;keycode&#xff09;键盘名称键值&#xff08;keycode&#xff09;BackSpace8Tab9Clear12Enter13Shift_L16Control_L17Alt_L18Pause19Caps_Lock20Escape27Space32Prior33Next34End35Home36Left37Up38Right39Down40Select41Print42Execute43Insert45Del…

c语言算ex自定义函数,用C语言写定积分的通用函数:sin(x),cos(x),eX.

/************************************************************//*sin,cos,exp函数已经存在于系统的数学函数库中&#xff0c;程序开头需要定义math头文件*//************************************************************/#include/****************主函数****************…

day12-HTML基础之DOM操作

DOM&#xff08;Document Object Model 文档对象模型&#xff09; 一个web页面的展示&#xff0c;是由html标签组合成的一个页面&#xff0c;dom对象实际就是将html标签转换成了一个文档对象。可以通过dom对象中js提供的方法&#xff0c;找到html的各个标签。通过找到标签就可以…

小程序源码 租房管理系统_如何通过租房小程序开发快速引流

租房市场在整个房产市场占据了极大一部分市场份额&#xff0c;而随着租售同权政策的提出、房价的不断提升&#xff0c;租房市场份额将进一步扩大。合肥小程序开发智速新媒体公司传统的租房方式不管是出租方还是租房客户&#xff0c;彼此之间的消息不对等、沟通困难等因素导致房…

REST 101开发人员专用

本地代码执行 诸如C之类的高级语言中的函数将被汇编为Assembly中的过程 。 它们增加了一个间接级别&#xff0c;使我们不必考虑内存地址。 诸如Java之类的面向对象语言中的方法和多态性增加了另一种间接性 &#xff0c;使我们不必考虑一组相似功能的特定变体。 尽管有这些间…

一个基于Bmob的OPPO锁屏壁纸小程序,写过之后发现...好像没什么卵用...一脸懵逼

小程序之前写的&#xff0c;也就前段时间&#xff0c;毛毛糙糙的写了第一版... 因为使用OPPO手机&#xff0c;所以有个锁屏杂志的东西&#xff0c;里面的图片每天都是由OPPO官方的人进行精选然后推送给用户的&#xff0c;图片菲菲菲菲菲常漂亮&#xff0c;看到网上很多人提取不…

SQLAlchemy 操作数据库

SQLAlchemy 操作数据库 SQLAlchemy为Python提供了不同数据库的统一接口&#xff0c;采用ORM的方式操作数据库&#xff0c;简洁优雅 一、安装 直接通过pip安装即可 pip install sqlalchemy 二、连接数据库 这里用小巧的sqlite来做测试 from sqlalchemy import create_engine# 创…

e会学上的c语言答案,e会学刷课脚本_e会学代刷

e会学刷课脚本_e会学代刷2020-06-17 04:10:15【刷课平台】【在线刷课】68在Excel 2010中,假定一个单元格的地址表示为$D25,则该单元格的行地址为( )。A、DB、25C、30D、45正确答案&#xff1a; B69在自定义序列对话框中输入新序列时,序列内容间用什么分隔。( )A、中文逗号B、回…

贝塞尔曲线理解与应用

贝塞尔曲线并非是由贝塞尔发明的&#xff0c;但是是因为他把这个东西应用到当时的汽车领域而闻名的&#xff0c;所以取名为贝塞尔曲线。 在我看来&#xff0c;用简单的话来理解一下贝塞尔曲线&#xff0c;他是通过少量几个点&#xff0c;使用一套公式&#xff0c;生成一条平滑曲…

数据结构 算法与应用C 语言描述答案,数据结构算法与应用-C语言描述.pdf

下载下载第1 6章 回 溯寻找问题的解的一种可靠的方法是首先列出所有候选解&#xff0c;然后依次检查每一个&#xff0c;在检查完所有或部分候选解后&#xff0c;即可找到所需要的解。理论上&#xff0c;当候选解数量有限并且通过检查所有或部分候选解能够得到所需解时&#xff…

云服务器布置_【阿里云ECS】(一)云服务器上安装RStudio-server

【阿里云ECS】&#xff08;一&#xff09;云服务器上安装RStudio-server最近注册了阿里云个人版&#xff0c;打算研究研究shiny部署问题。进了阿里云ECS因为是Ubuntu16.04的对于安装R和RStudio还是要学习实践一下的。第一步&#xff0c;安装R语言。我们使用apt的方式进行安装,步…

H5前期知识点总结 9月12日

知识点补充&#xff1a; 属性继承例子&#xff0c;color、font&#xff08;font-size/style/family/weight&#xff09; 1、浏览器的默认字体大小是16px,谷歌浏览器的最小字体是10px,其他浏览器的最小字体是12px。 2、通配符选择器 “*”&#xff0c;即选中body里所有的标签。 …

由原型模式引出的关于Cloneable接口和Object的clone()方法的一些问题

为什么要克隆快速到底 示例代码 1 class Resume2 {3 private String name;4 private String age;5 private String university;6 private String specialSkills;7 8 public Resume(String name, String age, String university, String specialSkills)…

Spring MVC:Ajax和JQuery

今天&#xff0c;我想演示如何将AJAX集成到Spring MVC应用程序中。 我将在客户端使用JQuery来发送请求和接收响应。 本教程将基于我以前关于Spring MVC和REST服务的教程之一。 在本文中&#xff0c;您将了解如何在异步请求的帮助下使Web应用程序更具交互性。 准备工作 我需要通…

C语言程序设计孙家啸第一版,广东年月自考各专业课程使用教材.doc

广东年月自考各专业课程使用教材附件2&#xff1a;广东2013年4月自考各专业课程使用教材序号课程代码课程名称使用教材作者出版社版次100009政治经济学(财经类)政治经济学(财经类)张雷声外语教学与研究出版社2012年版200012英语(一)大学英语自学教程(上册)高远高等教育出版社19…

手把手带你写一个JavaScript类型判断小工具

业务写了很多&#xff0c;依然不是前端大神&#xff0c;我相信这是很多‘入坑’前端开发同学的迷茫之处&#xff0c;个人觉得前端职业发展是有路径可寻的&#xff0c;前期写业务是一个积累过程&#xff0c;后期提炼总结&#xff0c;比如编程思想&#xff0c;父子类的原型继承&a…

【目录】《剑指Offer》Java实现

如题&#xff1a; 1) 找出数组中重复的数字 2) 不修改数组找出重复的数字 3) 二维数组中的查找 4) 替换空格 5) 从尾到头打印链表 6) 重建二叉树 7) 二叉树的下一个结点 8) 用两个栈实现队列 9) 斐波那契数列及青蛙跳台阶问题 10) 旋转数组的最小数字 11) 矩阵中的路…

yolov3之pytorch源码解析_springmvc源码架构解析之view

说在前面前期回顾sharding-jdbc源码解析 更新完毕spring源码解析 更新完毕spring-mvc源码解析 更新完毕spring-tx源码解析 更新完毕spring-boot源码解析 更新完毕rocketmq源码解析 更新完毕dubbbo源码解析 更新完毕netty源码解析 更新完毕spring源码架构更新完毕springmvc源码架…