数据基础存储3_第1页
数据基础存储3_第2页
数据基础存储3_第3页
数据基础存储3_第4页
数据基础存储3_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

任务5零售数据存储与分析—Elasticsearch实战课程导览01集群部署Elasticsearch集群安装与配置02客户端操作Apifox工具使用与CRUD操作03数据查询零售数据导入与查询实战04知识链接全文索引原理与核心概念集群部署01工单5.1概览本工单通过搭建

3节点

虚拟机环境,完成

Elasticsearch

的安装部署与配置工单信息项目内容工单编号5.1工单名称Elasticsearch集群部署建议学时1所属任务零售数据存储与分析—Elasticsearch实战环境要求已安装Linux系统的虚拟机学习目标项目内容知识目标掌握Elasticsearch集群部署方法能力目标能够独立安装和配置Elasticsearch集群素养目标培养学生的创新意识和创新精神ES与MySQL术语对应MySQLElasticsearch说明TableIndex文档的集合,类似于数据库的表RowDocumentJSON格式数据,类似于数据库中的行ColumnFieldJSON文档中的属性,类似于数据库中的列SchemaMapping定义文档的约束,类似数据库的表结构IndexDocumentFieldMapping安装文件上传与解压"Elasticsearch禁止root用户运行"01上传安装包在MobaXterm中,将安装文件上传至master节点的

/opt

目录→02解压并重命名cd/opttar-zxvfelasticsearch-6.0.0.tar.gzmvelasticsearch-6.0.0elasticsearch→03创建用户并赋权创建组

es、用户

es,密码

123456,修改文件夹所有者编辑elasticsearch.yml(4)进入Elasticsearch文件夹,编辑配置文件:cdelasticsearch→viconfig/elasticsearch.yml节点在集群中的名称:${HOSTNAME}network.host设置绑定地址network.host:_site_discovery配置指定集群发现时的单播查询列表,防止集群分裂discovery.zen.minimum_master_nodes:(总节点数/2)+1discovery.zen.ping.unicast.hosts:["host1","host2"]minimum_master_nodes

计算公式:(总节点数/2)+1,确保有足够主候选节点时才选举主节点资源与线程约束配置65536openfiles4096maxuserprocesses01修改系统资源约束文件vi/etc/security/limits.conf02扩展用户es的资源与线程数量配置文件内设置03切换到用户es并验证配置sues→ulimit-a04退出会话返回rootexit系统参数调整系统参数调整关闭swap编辑

/etc/fstab

文件,注释与swap相关的行调整虚拟内存参数在

/etc/sysctl.conf

中添加

vm.max_map_count=262144操作步骤01编辑fstab注释swap行修改

/etc/fstab,关闭swap功能02在sysctl.conf添加参数写入

vm.max_map_count=26214403执行sysctl-w使配置立即生效运行

sysctl-wvm.max_map_count=262144配置同步与节点准备同步配置文件使用scp命令将各项配置文件同步到datanode1和datanode2节点使配置立即生效在datanode1和datanode2节点分别执行ulimit-n65536、ulimit-u4096、sysctl-wvm.max_map_count=262144参数说明ulimit-n设置单个进程最大文件描述符数ulimit-u设置单个用户最大进程数环境变量与库同步目标:配置环境变量并同步Elasticsearch库到datanode节点完成master节点环境配置,同步至datanode集群,建立es用户权限体系操作步骤01修改master节点/etc/profile配置环境变量文件02执行source/etc/profile使配置生效source/etc/profile03scp同步profile到datanode1、datanode2scp/etc/profiledatanode1:/etc/profile;scp/etc/profiledatanode2:/etc/profile04在各datanode执行source生效source/etc/profile05同步Elasticsearch库并创建es用户cd/opt;scp-relasticsearchdatanode1:'pwd';scp-relasticsearchdatanode2:'pwd';groupaddes;useraddes-ges-p123456;chownes:es-R/opt/elasticsearch集群启动与验证集群启动与验证流程01启动集群分别在3个节点切换至

es

用户并执行

sues

elasticsearch,稍等片刻各节点显示启动内容即完成02验证集群状态在master节点执行

curl-XGEThttp://master:9200/_cluster/health?pretty,-XGET

指定HTTPGET方法,/_cluster/health

为集群健康状态查询API03关闭集群前台运行时按

Ctrl+C

组合键即可停止本工单讲解了

Elasticsearch集群

的安装与配置,通过搭建

3节点虚拟机环境

并安装Elasticsearch,为后续零售数据存储与分析提供技术支撑客户端操作02工单5.2概览本工单通过安装国产软件Apifox,对Elasticsearch客户端进行查看、新建、删除索引和文档等操作工单基本信息项目内容工单编号5.2工单名称Elasticsearch客户端操作应用建议学时1

学时所属任务零售数据存储与分析—Elasticsearch实战环境要求已安装好Elasticsearch的集群学习目标学习目标内容知识目标掌握Elasticsearch客户端操作方法能力目标能够独立进行Elasticsearch客户端操作应用素养目标培养学生的实践动手能力Apifox客户端安装前置条件:确保

Elasticsearch

已启动,并使用curl验证服务状态软件介绍本书采用国产软件

Apifox,界面简洁、支持中文,更适合初学者01官网下载下载安装文件,双击运行02选择范围选择

Anyonewhousesthiscomputer(allusers),单击

Next03确认路径确认安装路径,单击

Install04完成安装完成安装,单击

Finish国产·中文·简洁更适合初学者项目创建与环境配置创建项目与环境配置步骤一:创建项目01运行Apifox,进入登录界面02登录后单击新建项目按钮03将项目名称设置为elasticsearch,确认创建04单击进入项目内部配置界面步骤二:配置环境01单击右上角开发环境下拉按钮,选择管理环境02单击左侧导航栏底部新建环境03设置环境名称为elasticsearch04将默认服务前置URL设置为33:920005保存后关闭,再次选择elasticsearch环境环境配置完成,接下来配置接口接口配置与健康检查返回集群健康状态信息,确认集群正常工作接口配置与健康检查01单击新建接口按钮填写配置信息(标*为必填项),保存02单击运行按钮确认接口成功响应03单击发送按钮访问master节点接口04返回集群健康状态信息确认集群正常工作MASTERNODEENDPOINT33:9200/_cluster/health索引操作:查看·新建·删除索引三大基础操作:查看、新建、删除查看索引GET/_cat/indices添加参数

v

返回带列头信息初始状态显示当前无索引新建索引PUT/<indexName>返回

"acknowledged":true

表示创建成功删除索引DELETE/<indexName>返回

"acknowledged":true

表示删除成功再次查看所有索引确认已删除01查看发送

GET/_cat/indices,添加参数

v

返回带列头信息,初始状态显示当前无索引02新建发送

PUT/<indexName>,返回

"acknowledged":true

表示创建成功03删除发送

DELETE/<indexName>,返回

"acknowledged":true

表示删除成功,再次查看所有索引确认已删除文档新建与获取01新建文档在

ramen_rating

索引新建文档,Body内容:{"Area":"Australia","Bowl":"7","Cup":"17","Pack":"5","rating":"2.44"}02新建接口方法选

PUT→路径为

索引名/doc/文档ID→Body选

json

格式填入上述内容→保存03运行发送单击

运行→发送,返回

"result":"created"

即创建成功。同时隐式自动创建

ramen_rating

索引04获取文档新建接口→方法选

GET→路径为

索引名/doc/文档ID→发送后返回完整文档内容新建PUT

/<indexName>/doc/<identityOfDoc>创建新文档,索引名不支持大写字母获取GET

/<indexName>/doc/<identityOfDoc>读取已有文档,返回完整文档内容文档替换与更新操作替换操作完全替代原文档定义:全量覆盖,原有字段全部清除POST/<indexName>/doc/<identityOfDoc>命令路径:直接指向目标文档修改Body保留Area和ratingArea改为China,发送后重新获取确认原文档已被完全替换更新操作部分字段的增删改定义:增量修改,保留未变更字段POST/<indexName>/doc/<id>/_update命令路径:追加_update端点Body的doc字段修改内容方法POST,路径追加_update,修改rating和Bowl返回"result":"updated"再次获取:Area仍为China,rating和Bowl已更新替换是全量覆盖,更新是增量修改——操作路径与结果验证截然不同文档删除与工单小结删除文档命令DELETE/<indexName>/doc/<identityOfDoc>路径格式:索引名/doc/文档ID01方法选择使用

DELETE

方法,路径为

索引名/doc/文档ID02成功返回验证

result

"deleted"03验证确认再次获取确认

found

false本工单学习了

Elasticsearch

客户端软件

Apifox

的安装与使用,掌握了通过Apifox对文档和索引进行

查看、新建、更新和删除

CRUD

操作数据查询03工单5.3概览通过Elasticsearch索引功能查询存储在MySQL中的数据,实现输入商品部分字符串即可匹配所有商品编码、名称及价格工单基本信息项目内容工单编号5.3工单名称Elasticsearch零售数据的查询建议学时1所属任务零售数据存储与分析—Elasticsearch实战环境要求已安装好Elasticsearch的虚拟机学习目标学习目标内容知识目标掌握Elasticsearch的功能及应用能力目标能够熟练使用Elasticsearch进行读取数据素养目标培养学生主动思考、自主学习的能力load.py数据导入程序load.py数据导入程序从MySQL表读取数据,写入Elasticsearch索引源表:duct_price目标索引:product_price文件:load.pyPython代码实现importpymysqlimportrequestsimportjsonhttp=requests.Session()defreadMySQL():db=pymysql.connect(

host='33',

port=3306,

user='sqoop',

password='newPass@123',database='ods')cursor=db.cursor()cursor.execute('selectproduct_code,product_title,''full_price_in_local_currency''fromproduct_pricelimit1000')mit()result=cursor.fetchall()db.close()returnresultif__name__=='__main__':rows=readMySQL()forrowinrows:code,title,price=rowdata={'code':code,'title':title,'price':price}datastr=json.dumps(data)response=http.put(

url=f'33:9200/product_price/doc/{code}',data=datastr,headers={'content-type':'application/json;charset=UTF-8'})obj=response.json()

ifobj.get('_id',0)==0:print(f'导入失败')else:print(f"导入成功")Apifox查询接口配置01新建接口方法

选择

GET路径

填写

product_price/_search02配置参数选择

Body→json输入

match

查询条件03执行查询单击

保存→运行→发送"默认仅返回

10

条,添加

size

参数可指定更多"70件匹配商品包含

bag默认仅返回

10

条添加

size

参数可指定更多过滤查询操作模糊查询修改Body中

match

条件,实现模糊匹配过滤操作过滤Area含China或Abcd,添加

bool

查询,仅返回1条组合过滤Area含China且Bowl为45,bool

查询

must

条件组合过滤查询操作详解1模糊查询修改Body中的

match

条件,实现模糊匹配2过滤操作过滤Area中含China或Abcd的文档,修改Body添加

bool

查询条件,仅返回1条符合记录3组合过滤过滤Area含China且Bowl为45的文档,使用

bool

查询的

must

条件组合组合过滤查询体(JSON){"query":{"bool":{"must":[{"match":{"Area":"China"}},{"match":{"Bowl":"45"}}]}}}query.py查询程序query.py查询程序输入商品名即可查询,实现交互式检索importrequestsimportjsonhttp=requests.Session()whileTrue:queryStr=input("请输入要查找的商品包含的字符串:")condition={"query":{"match":{"title":queryStr}}}datastr=json.dumps(condition)response=http.get(url=f"33:9200/"f"product_price/_search",data=datastr,headers={"content-type":"application/json;charset=UTF-8"})obj=response.json()foreachinobj["hits"]["hits"]:print(each["_source"])运行示例输入

bag,即可返回所有匹配商品信息工单小结:本工单完成了使用

Elasticsearch

快速查询操作数据的目标,实现了从

MySQL

读取数据、写入

ES索引、并通过

match查询快速检索商品信息知识链接04全文索引建立过程全文索引是一种用于实现对文本内容快速检索的数据结构01获取原始内容通过网络爬虫等方式获取,可使用Solr、Nutch等开源爬虫程序收集网页内容02建立文档将原始内容转换成文档形式,包括网页、PDF、邮件或日志信息等03文档分析将文档文本分割成一系列词元(Token)04文档索引将词元及位置信息写入倒排索引,每个词元下维护postings列表规范化处理与分析器规范化处理包括将大写字符转换为小写、复数统一为单数、同义词统一等倒排索引预处理字符过滤器在文本被切分之前进行清理操作,如移除HTML标签、对特殊字符进行替换等分词器将文本切分为独立的词元,通常根据空格和标点符号进行切分分词过滤器对切分后的词元进行转换、移除或添加操作,如将字符转为小写、移除常见词元(如a、an、of、the)、添加同义词全文检索相关技术5类核心查询单项查询多项查询短语查询通配符查询分级排序辅助机制分析器查询输入体验工程实现要点正排索引—字段到文档的映射关系分片/副本—分布式环境下的扩展性与性能保障Elasticsearch核心定义基于

Lucene

构建,具备

RESTfulAPI

开源分布式全文搜索引擎,同时作为

分布式文档数据库

运行分布式架构与实时存储分布式架构水平扩展至数百台服务器实现海量数据的存储与处理数据分布多节点天然分布式数据布局负载均衡请求自动分发到各节点高可用性兼得故障自动转移,服务持续可用分布式实时存储为每个字段建立索引倒排索引加速全文检索分布式实时文件存储机制数据写入即立即可搜快速完成海量数据存储高吞吐写入,近实时持久化搜索与分析一体化存储、检索、聚合实时联动全文搜索与查询统计全文搜索对所有索引字段进行全文搜索与匹配,支持词元搜索、短语搜索、模糊搜索、通配符搜索等多种方式,文本分析能力强大词元搜索短语搜索模糊搜索查询统计提供丰富查询语法与灵活统计能力,支持布尔查询、范围查询、过滤查询、聚合查询等多种查询方式布尔查询聚合查询开发集成与可视化扩展多语言RESTfulAPI基于Java开发原生Java实现,确保高性能与稳定运行丰富客户端库提供完善的官方及社区客户端支持多语言支持覆盖主流编程语言,降低集成门槛工具集成支持多种开发工具与框架无缝集成Kibana可视化数据可视化配合Kibana实现直观的数据展示与分析良好可扩展性架构灵活,支持业务规模持续增长按需增加节点水平扩展集群,灵活应对负载变化提升性能分担负载,保障查询响应效率实时分析与开源生态实时数据分析收集存储日志、交易数据进行搜索、统计和可视化分析挖掘关键信息与数据趋势免费开源社区免费开源搜索引擎拥有活跃的开发者社区技术交流氛围良好索引词、文本与分析三个核心术语:索引词、文本与分析索引词精确值可被索引的精确值,区分大小写精确匹配foo/Foo/FOO

为不同索引词,term查询实现精确匹配文本非结构化文字需先分析再检索检索流程解析为索引词后存入索引,按检索条件返回匹配内容集群、节点与路由集群组成由一个或多个节点组成,提供索引和检索服务唯一名称集群具有唯一名称默认默认为

Elasticsearch,节点凭此名称加入集群节点定位集群中

逻辑独立

的服务单元功能存储数据并参与索引与搜索命名每个节点有

唯一名称,未指定时默认加入

elasticsearch

集群路由分配机制按

文档ID散列值

分配到特定主分片关联存储合理使用可使

关联文档同分片存储效率提升减少跨分片操作,提升查询效率分片、主分片与副本分片Elasticsearch通过分片机制实现分布式存储与高可用分片底层基于Lucene的基本存储单元横向扩展数据分布不同节点高可用故障时自动迁移弹性扩展扩容时自动重平衡主分片索引的读写操作核心读写核心每个文档存储于一个主分片中默认数量默认

5

个主分片不可修改创建后数量不可修改副本分片主分片的复制与冗余保障故障切换主分片故障时切换为主分片查询分流查询可在主/副本中分流执行节点隔离必须部署在不同节点上复制、索引与类型复制5个主分片1个副本分片2个至少节点高可用性节点故障时副本分片接管工作,副本不存储在同一节点扩展性搜索在所有副本分片上并行执行,提升性能索引文档集合具有相同结构的文档,对应数据库中的"表"独立配置每个索引唯一名称(通常小写),单个集群可定义多个索引,各自独立配置分片和副本类型早期版本一个索引可包含多个类型Elasticsearch7.0起一个索引只能包含一个类型文档、映射与字段文档以

JSON

格式存储的数据对象,类似关系数据库表的一行记录每个文档有类型和唯一

ID原始JSON存储于

_source

字段,搜索时默认返回该字段映射定义索引中字段的类型与设置,类似表结构指定数据类型、分析器、索引选项等,可事先定义或存储时自动识别字段可为简单值(字符串、整数、日期)或数组/对象的嵌套结构类似表的列,每个字段对应特定字段类型来源字段与主键来源字段

_source原文档存储与返回默认存储原文档,查询时原样返回精确JSON字符串,不暴露索引分析后的任何数据主键

ID唯一标识与自动生成文档唯一标识,用户未提供时系统自动生成,全局必须唯一ElasticsearchAPI分类Elasticsearch提供功能丰富且易于使用的RESTfulAPI,按功能分为四大类集群健康与状态API集群健康状态节点CPU、内存

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论