用户画像项目之ES存储
1. ELK技术栈【ELK生态圈】
对于ELK的概念解释,ELK官网给出的是:“ELK”是三个开源项目的首写字母的缩写,这三个项目分别是:Elastisearch、Logstash和Kibana。Elastisearch 是一个搜索和分析引擎;Logstash 是服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,如何将数据发送到诸如Elastisearch 等的“”“存储库” 中 ;Kibana则可以让用户在Elastisearch 中使用图形和图表对数据进行可视化。
总结:
- E : 数据存储和分析,是核心组件 ;
- L : 数据采集和数据格式转换的组件;
- K : 数据可视化 类似finbi
官网
- es官网:https://www.elastic.co/cn/
- elk官网:https://www.elastic.co/cn/what-is/elk-stack
- es数据采集组件官网:https://www.elastic.co/cn/beats/
1.1 那ES是什么?
1.1.1 ES的概述:
ES就是Elastisearch;是一个基于java语言作为源码的全文检索引擎,可以存储结构化和非结构化数据,能够实现数据分析和数据存储。
1.1.2 用户画像使用es的作用
- 使用ES存储用户的用户关联的原始数据
- 画像最终结果存储,需要使用spark实现针对ES索引的数据插入(upsert)操作,es支持该操作
- es支持hadoop生态圈技术,可以方便的与hive集成,实现数据从hive采集到es中
1.1.3 ES的应用场景
==注意:数据分析并不是es的强项,存储和全文检索才是他的强项 ==
- 向应用或网站提供站内搜索功能
- 存储和分析日志、指标和安全事件数据
- 支持机器学习实时自动建模数据存储
- 支持数据存储,来实现自动化业务工作流程
- 支持地理信息系统(GIS)集成和分析空间信息
- 支持血缘关系数据,使用图技术解决血缘关系展示和分析
es和mongo都是基于文档对象的非关系新数据库
都支持地理位置搜索功能,数据存储格式为bson => binary json格式
- Beats
- 轻量级数据采集插件,可以向 logstash 或 es 提供数据
- 采集指标类型组件
1.3 ES是全文检索引擎
- 全文检索
- 根据词,使用分词器进行拆分,检索到文档中包含该词文档内容和文档数
案例
智能手机 => 搜索词、关键词
: 使用分词器对词进行拆分
: 分词器
: standard标准分词器,英文以空格和逗号划分词,中文单个字进行划分
: 中文分词器:jieba、ik分词器,中文分词,让划分后词有含义
当输出:词(智能手机),能检索到包含该词的文档过程叫全文检索
电脑文档1 存储 => index1_doc1(1) :数据词:电脑
手机文档2 => index2_doc1(1) : 数据词:手机
电脑文档3 => index1_doc2(2) :数据词: 之前存储过一次,不再存储电脑这个词
手机文档4 => index2_doc2(1) : 数据词:之前存储过一次,不再存储手机这个词
电脑文档5 => index1_doc3(3) :数据词: 之前存储过一次,不再存储电脑这个词
- es和关系型数据库(ROBMS)对比
- 在es中,索引类型几乎毫无意义,可以把表都当初索引,可以任务库为:default
1.4 ES是全文检索引擎,不是搜索引擎
-
es不等于全文搜索引擎
- es包括存储和分析的功能,一般用于站内搜索
- es是一款基于java编写的开源的全文检索引擎,可以处理结构化和非结构化数据
- es有自己的索引文件系统,存储数据,数据存储在磁盘上
- es有自己的分析引擎,可以实现数据分析,有自己的dsl语法,有sql语法,有curl网络http请求语法
-
搜索引擎
- 搜索引擎是一款产品
- 搜索引擎不仅包括全文检索功能,还有爬虫,竞价排名,算法(pagerank:网页排名权重),还有很多其他关联子系统
1.5 ES的应用场景
-
适用于公司内部网站的搜索功能
- 如果使用sql实现,效果没有全文检索引擎好,而hive数据库没有分词的功能,数据存储不是索引的形式
- 适用于数据分析场景
- 新闻,电商搜索等功能、大文本处理、地理信息数据处理等
- 适合作为非关系型数据库
- 存储结构化和非结构化数据
- 适用于大规模数据存储
- es支持分布式集群模式,当成非关系新数据库使用
-
es和 hbase,为什么不选hbase
- hive和hbase都是使用hdfs存储数据,把hive数据导入到hbase中,从hdfs的一个路径导入另一个路径,使用mr中的maptask实现。hbase需要经过mr过程,采用bucket导入数据,过程麻烦
- hbase数据采集方案比使用es跟复杂
2. 全文检索框架
2.1 Lucene
-
定义
- 全文检索工具包,是使用全文检索低级api开发的工具。
- 低级api:更接近软件底层,需要使用更多的代码实现简单的功能
- 高级api:远离软件底层,上层有封装,提供访问和操作api
-
Solr
- 基于lucenc的全文检索框架
- 是使用全文检索高级api开发工具,可以使用sorl cloud实现分布式集群
.
-
Elasticsearch:
- 基于lucene的全文检索引擎,使用java做为源语言,可以使用java和python等其他语言
2.2 倒排索引
-
倒排索引(英语:Inverted index),也常被称为反向索引、置入档案或反向档案,是一种建立索引方法,被用来存储在全文搜索下某个单词在一个文档或者一组文档中的存储位置的映射。 它是文档检索系统中最常用的数据结构。
-
一种索引方法,根据词存储词和词找到文档的索引信息过程,叫倒排索引
- Mysql是基于B+Tree算法建立索引
- Oracle是基于BitMap算法建立索引
-
-
官网案例
- https://www.elastic.co/guide/cn/elasticsearch/guide/current/inverted-index.html
3.ES服务启动
-
es框架目录结构
-
es服务启动后,就会有一个ElasticSearch的java进程
-
启动:
- 切换用户: su es (就是切换到普通用户,es不能通过root用户启动)
- 启动es服务 : elasticsearch -d
- 退出es用户(回到root用户)
-
es访问页面:文章来源:https://www.toymoban.com/news/detail-678315.html
- es服务器访问端口:9200
-
es的home目录文章来源地址https://www.toymoban.com/news/detail-678315.html
- /home/es/elasticsearch-7.10.2
4. 操作es服务器的三种方法
4.1 浏览器插件 elasticsearch head
- 在谷歌浏览器或者edga浏览器的拓展插件中搜索elasticsearch head ,然后安装。重新打开浏览器就可以了。
-
点击 elasticsearch head进入
在上面的连接处连接es服务器。
会显示集群名称“TEFC-Userprofile”
这个可以在服务器的es的config目录下的配置文件:elasticsearch.yml中
cluster.name: TFEC-UserProfile
4.2 restful api
- 使用vscode,操作es服务器,创建索引,添加数据,删除索引,删除数据,删除某一条数据
- 使用vscode安装elasticsearch插件或者使用命令模式操作索引
4.3 使用pycharm操作es
到了这里,关于ES存储学习(未完)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!