这篇文章涵盖了如何使用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,以便将其用于网站上的显示目的。

产品视图计数功能

采取一个方案来显示客户在最近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

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

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

    这篇文章涵盖了如何使用ElasticSearch-Hadoop从Hadoop系统读取数据并在ElasticSearch中对其进行索引. 它涵盖的功能是在最近n天中为每个客户的产品浏览量计数和热门搜索查 ...

  2. apache hive_Hive:使用Apache Hive查询客户最喜欢的搜索查询和产品视图计数

    apache hive 这篇文章介绍了如何使用Apache Hive查询Hadoop下存储的搜索点击数据. 我们将以示例的形式生成有关总产品浏览量的客户最爱搜索查询和统计信息. 继续之前的文章 使用大 ...

  3. Hive:使用Apache Hive查询客户最喜欢的搜索查询和产品视图计数

    这篇文章涵盖了使用Apache Hive查询存储在Hadoop下的搜索点击数据. 我们将以示例的方式生成有关总产品浏览量的客户排名靠前的搜索查询和统计信息. 继续之前的文章 使用大数据分析客户产品搜索 ...

  4. 1.Hadoop简介——为什么要使用Hadoop?什么是Hadoop?Hadoop有什么作用?

    1. 1TB大文件操作的思考(理解) 文件大小单位:B,KB,MB,GB,TB,PB,EB,ZB,YB- 1B=1Byte=8bit 1KB=1024B 1MB=1024KB 1GB=1024MB 1 ...

  5. Elasticsearch生态技术峰会 | 阿里云Elasticsearch云原生内核

    简介: 开源最大的特征就是开放性,云生态则让开源技术更具开放性与创造性,Elastic 与阿里云的合作正是开源与云生态共生共荣的典范.值此合作三周年之际,我们邀请业界资深人士相聚云端,共话云上Elas ...

  6. 【Elasticsearch】eBay上的Elasticsearch性能调优实践

    1.概述 翻译:eBay上的Elasticsearch性能调优实践 中文版:eBay上的Elasticsearch性能调优实践 Elasticsearch 是一个基于 Apache Lucene 的开 ...

  7. Hadoop——(Hadoop框架,Hadoop的优缺点,Hadoop1.x和2.x的版本区别,Hadoop架构,Hadoop目录结构)

    文章目录 大数据的简介 Hadoop框架 Hadoop的优缺点 Hadoop1.x和2.x的版本区别 Hadoop架构 Hadoop目录结构 正常工作的Hadoop集群中Hadoop都分别需要启动哪些 ...

  8. Hadoop入门(上):大数据特点、大数据前景、大数据组织结构、Hadoop组成、Hadoop版本介绍、Hadoop运行环境搭建、CentOS6安装JDK、安装Hadoop、Hadoop目录结构

    资料来源于尚硅谷 本篇文章目录 第1章·大数据概论 1.1.大数据概念. 1.2.大数据特点(4V) 1.3.大数据应用场景 1.4.大数据发展前景 1.5·大数据部门业务流程分析. 1.6·大数据部 ...

  9. 零基础linux安装hadoop步骤,hadoop的Linux下简单安装步骤

    首先安装Hadoop cluster版本: $ curl -O http://archive.cloudera.com/cdh/3/hadoop-0.20.2-cdh3u6.tar.gz $ cd / ...

最新文章

  1. NVIDIA CUDA-X AI
  2. 最常见的《最聪明的技巧》实战讲解!
  3. python计算身体质量指数_利用Python计算身体质量指数BMI来判断体型
  4. Java程序中Timer的用法
  5. Map集合的遍历(java)
  6. Windows下修改Git Bash 默认路径
  7. vagrant 配置并启动
  8. 公开课 | 知识图谱构建与应用概述
  9. 正则表达式JavaScript版本回顾笔记背诵版本
  10. 【ModelArts-Lab AI实战营】使用Postman测试Modelarts在线服务(图像分类、物体检测)
  11. python创建实例属性_Python学习笔记__6.5章 实例属性和类属性
  12. a标签href不跳转_HTML常用标签
  13. 软件测试入门有哪些书籍可供推荐?
  14. Python爬取上交所年报下载并转成TXT
  15. vba 添加outlook 签名_outlook2007使用vba签名的问题
  16. 中文正版Unity下载
  17. IT通过什么途径去美国工作?
  18. 这篇文章来自我的微信朋友圈,并不特别好玩,但可以给创业者补点财务知识
  19. 外卖订餐系统的设计与实现/点餐订餐系统
  20. 由于找不到vcruntime140_1.dll无法继续执行代码,vcruntime140_1.dll丢失如何修复

热门文章

  1. css黑科技有限公司,css动画之黑科技
  2. 不同范数下的余弦定理_第06题 | 从源头追溯「余弦定理」amp; 文理科知识点的异同...
  3. browserquest php安装,请问一下browserquest-php项目换成GatewayWorker的形式需要怎么部署worker...
  4. Future取消线程执行
  5. kafka再均衡监听器测试
  6. okta使用_使用Okta的单点登录保护您的Vert.x服务器
  7. javaserver_什么是JavaServer Faces(JSF)
  8. intellij远程调试_IntelliJ中的远程调试Wildfly应用程序
  9. java自动生成合同_Java 7和Java 8之间的细微自动关闭合同更改
  10. Java面试准备:15个Java面试问题