1、目录目录概述概述1InfluxDBInfluxDB时序数据库简介时序数据库简介2Apache Apache Jena-TDBJena-TDB简介简介3ElasticsearchElasticsearch4小结小结5111.1 概述概述 NoSQLNoSQL数据库是适应大数据存储与管理应用需求而诞生的技数据库是适应大数据存储与管理应用需求而诞生的技术。多样性是大数据的一个典型特征,术。多样性是大数据的一个典型特征,NoSQLNoSQL数据库也具有数据库也具有多样性。多样性。211.1.1 时序时序数据库数据库 时序数据库(时序数据库(Time Series DatabaseTime Series
2、 Database)是用于存储和)是用于存储和管理时间序列数据的专业化数据库管理时间序列数据的专业化数据库。特使适合应用特使适合应用于环境感知与监测、物流、电力、化于环境感知与监测、物流、电力、化工等领域实时监测、检查与分析设备所采集、产生工等领域实时监测、检查与分析设备所采集、产生的时间序列数据的时间序列数据的存储的存储。时序数据典型特点时序数据典型特点 产生产生频率频率快快 数据数据存储量存储量大大 数据处理数据处理实时性要求高实时性要求高。物物联网联网技术、工业互联网的技术、工业互联网的高速高速发展带动发展带动时序数据时序数据库更加广泛库更加广泛的应用的应用。3411.1.1 时序数据库
3、时序数据库 时序数据库的一些基本概念时序数据库的一些基本概念时间戳(时间戳(TimestampTimestamp)、度量)、度量(metricmetric)、标签()、标签(tagtag)、域)、域(fieldfield)、度量值()、度量值(valuevalue)、数据点)、数据点 (Data Point(Data Point)、时间序列、时间序列(Time SeriesTime Series)示例:对温度的时间序列监测值示例:对温度的时间序列监测值11.1.1 时序时序数据库数据库 DB-Engines DB-Engines RankingRanking发布的发布的20202020年年5
4、5月月的时序数据库(的时序数据库(Time Time Series DBMSSeries DBMS)排名结果如)排名结果如图所图所示,其中示,其中InfluxDBInfluxDB位居第位居第1 1。https:/db- 时序时序数据库数据库 发展发展趋势图趋势图611.1.1 时序时序数据库数据库 相比传统工业领域实时数据库,时序数据库具有高相比传统工业领域实时数据库,时序数据库具有高可扩展性、底成本,能保障时序大数据的高性能存可扩展性、底成本,能保障时序大数据的高性能存储与访问操作。储与访问操作。InfluxDBInfluxDB是用是用GoGo语言编写的一种开源分布式时序、语言编写的一种开源
5、分布式时序、事件和指标数据库,无须外部依赖事件和指标数据库,无须外部依赖。InfluxDBInfluxDB在在监控领域、物联网采集设备的时序数据监控领域、物联网采集设备的时序数据存储领域中有广泛的应用存储领域中有广泛的应用。OpenTSDBOpenTSDB其实不能说是数据库,它本身无法存储其实不能说是数据库,它本身无法存储任何数据,更准确地说,它只是建立在任何数据,更准确地说,它只是建立在HBaseHBase上的上的一层数据读写服务一层数据读写服务。本章本章主要以主要以InfluxDBInfluxDB为例介绍时序为例介绍时序数据库相关数据库相关知识。知识。711.1.2 RDF数据存储数据存储
6、 RDFRDF:Resource Resource Description Description FrameworkFramework 资源描述框架资源描述框架 RDFRDF最初用于描述元数据。最初用于描述元数据。所谓所谓元数据,即元数据,即“描述数据的数据描述数据的数据”。RDFRDF早期应用在苹果公司管理图片、音频等各种各早期应用在苹果公司管理图片、音频等各种各样数据的元数据表示样数据的元数据表示方面。方面。后来后来人们发现人们发现RDFRDF这种形式非常适合用于在万维网这种形式非常适合用于在万维网上上对资源、知识等的对资源、知识等的结构化表示,于是结构化表示,于是19991999年,年
7、,RDFRDF被被W3CW3C推为推为行业标准行业标准。811.1.2 RDF数据数据存储存储 DB-Engines Ranking of RDF Stores排名排名https:/db- RDF数据数据数据数据存储存储 RDFRDF使用简单的使用简单的三元组方式三元组方式来描述事物和关系,表来描述事物和关系,表示事物之间的语义关系示事物之间的语义关系。三元组三元组是知识图谱中知识表示的基本单位,简称是知识图谱中知识表示的基本单位,简称SPOSPO。三元组三元组类似自然语言中的主语、谓语与宾语类似自然语言中的主语、谓语与宾语。从从内容上看三元组的结构为内容上看三元组的结构为“资源资源-属性属性
8、-属性值属性值”资源资源实体由统一资源标识符(实体由统一资源标识符(URIURI)表示,表示,由于由于RDFRDF规定规定资源的命名必须使用资源的命名必须使用URIURI,所以也直接解决了命名空间,所以也直接解决了命名空间的问题。的问题。属性属性值可以是另一个资源实体的值可以是另一个资源实体的URIURI,也可以是某种数,也可以是某种数据类型的值,也称为字面量(据类型的值,也称为字面量(LiteralsLiterals)本章主要本章主要以以Apache Jena TDBApache Jena TDB为为例例介绍介绍RDFRDF存储相关存储相关知识。知识。1011.1.3 搜索引擎搜索引擎 数据
9、分类数据分类 结构化数据、半结构化数据、非结构化数据结构化数据、半结构化数据、非结构化数据 非结构化数据也非结构化数据也即全文即全文数据的搜索主要有两种数据的搜索主要有两种方法方法 顺序扫描顺序扫描 创建索引创建索引 随着各个应用领域企业,特别是互联网企业内部数据量越来随着各个应用领域企业,特别是互联网企业内部数据量越来越大,高效搜索相关半越大,高效搜索相关半/非结构化文档数据的需求越来越迫非结构化文档数据的需求越来越迫切,高效搜索引擎被引入企业级应用系统架构中。切,高效搜索引擎被引入企业级应用系统架构中。搜索引擎特点:搜索引擎特点:内部提供索引创建、维护等机制内部提供索引创建、维护等机制11
10、 将将非结构化数据中的一部分信息提取出来,重新组织,使非结构化数据中的一部分信息提取出来,重新组织,使其变得有一定结构,然后对此有一定结构的数据(索引)进其变得有一定结构,然后对此有一定结构的数据(索引)进行搜索,从而达到提高搜索性能的目的行搜索,从而达到提高搜索性能的目的11.1.3 搜索引擎搜索引擎 DB-Engines Ranking of Search DB-Engines Ranking of Search EnginesEngines排名排名 https:/db- 搜索引擎搜索引擎 全文检索全文检索(Full-text Search)(Full-text Search):先建立索引
11、,再对索引进行搜索:先建立索引,再对索引进行搜索的过程。的过程。Apache Apache LuceneLucene简介简介:是开源、高性能是开源、高性能搜索引擎,支持搜索引擎,支持全文全文搜搜索,提供跨索,提供跨平台的平台的java APIjava API库。库。特性特性 可扩展、高性能可扩展、高性能索引索引 强大、精确、高效的搜索强大、精确、高效的搜索算法,如:算法,如:支持权重查询,首先将最优结果支持权重查询,首先将最优结果返回;返回;支持多种查询类型,句子查询、通配符查询、临近查支持多种查询类型,句子查询、通配符查询、临近查询、范围查询询、范围查询等等;等等;支持字段搜索,例如文章的标
12、题、作者、内容等等支持字段搜索,例如文章的标题、作者、内容等等 支持任一字段支持任一字段排序;排序;跨跨平台解决平台解决方案:方案:JavaJava编写编写1311.1.3 搜索引擎搜索引擎 ElasticsearchElasticsearch位居第一,它是一个基于位居第一,它是一个基于Apache Apache LuceneLucene 的开源、分布式并且支持的开源、分布式并且支持RESTfulRESTful接口的现代搜索与接口的现代搜索与分析引擎,采用分析引擎,采用JavaJava语言开发语言开发。SolrSolr也是一也是一个采用个采用JavaJava开发并基于开发并基于LuceneLu
13、cene的高性能全的高性能全文搜索引擎。文搜索引擎。SolrSolr提供了比提供了比LuceneLucene更为丰富的查询语更为丰富的查询语言言,也是,也是一一款优秀款优秀的全文搜索引擎的全文搜索引擎。搜索引擎重点了解以下内容搜索引擎重点了解以下内容 数据索引结构的存储模式数据索引结构的存储模式 索引数据的创建与维护方法索引数据的创建与维护方法 索引数据的应用访问方法索引数据的应用访问方法 本章主要以本章主要以ElasticsearchElasticsearch为例介绍为例介绍搜索引擎基础知识。搜索引擎基础知识。14目录目录概述概述1InfluxDBInfluxDB时序数据库简介时序数据库简介
14、2Apache Apache Jena-TDBJena-TDB简介简介3ElasticsearchElasticsearch4小结小结51511.2 InfluxDB时序数据库简介时序数据库简介 时序数据就是带有明显的时间序列特征的时序数据就是带有明显的时间序列特征的数据,数据,如:如:金融领域金融领域:随着:随着时间不断变化的股票价格时间不断变化的股票价格数据、实时变数据、实时变化的国际黄金交易价格;化的国际黄金交易价格;气象气象领域领域:不用地域温度:不用地域温度变化变化数据、空气质量状态数据;数据、空气质量状态数据;物流领域物流领域:车辆:车辆及货物流转状态数据及货物流转状态数据等;等;
15、快递领域快递领域:不同企业、不用地域实时变化的揽件、派件:不同企业、不用地域实时变化的揽件、派件快递业务量数据;快递业务量数据;通信领域通信领域:不同时刻的业务上行、下行业务量数据等;:不同时刻的业务上行、下行业务量数据等;云平台云平台:资源占用状态监控数据等;:资源占用状态监控数据等;时序时序数据库中每条时序数据都和某个时间点相关联,数据库中每条时序数据都和某个时间点相关联,记录着该时刻业务领域的数据状态记录着该时刻业务领域的数据状态。1611.2 InfluxDB时序数据库简介时序数据库简介 InfluxDBInfluxDB时序数据库主要特色时序数据库主要特色功能功能 1 1)基于时间序列
16、)基于时间序列,提供了丰富的与,提供了丰富的与时间有关的时间有关的相关相关数据处理函数数据处理函数,如最大如最大、最小、求和、最小、求和等等。等等。2 2)可度量性:可以实时对时序大数据进行计算。)可度量性:可以实时对时序大数据进行计算。3 3)基于事件:支持任意的事件数据。)基于事件:支持任意的事件数据。InfluxDBInfluxDB数据可从链接:数据可从链接:https:/ InfluxDB时序数据库简介时序数据库简介InfluxDBInfluxDB时序数据库中的建模时序数据库中的建模术语:术语:1 1)databasedatabase:数据库。:数据库。2 2)measurementm
17、easurement:对应数据库中的表:对应数据库中的表,不需单独创,不需单独创建表,直接新增一条数据时,如果该建表,直接新增一条数据时,如果该measurementmeasurement不不存在,将会创建并插入一条数据。存在,将会创建并插入一条数据。3 3)pointpoint:对应表中的一行数据:对应表中的一行数据,pointpoint由时间戳由时间戳(timetime)、数据()、数据(fieldfield)、标签()、标签(tagstags)组成)组成;时间时间戳以戳以nsns为单位,每个记录都必然有这个属性,没有为单位,每个记录都必然有这个属性,没有显示添加时,默认会给一个值。显示添
18、加时,默认会给一个值。4 4)tagtag:对应:对应measurementmeasurement的索引列,也可以没有。的索引列,也可以没有。类型要求是字符串类型;属于键值对结构。类型要求是字符串类型;属于键值对结构。1811.2 InfluxDB时序数据库简介时序数据库简介 5 5)fieldfield:对应数据列:对应数据列,fieldfield无索引,属于键值对结无索引,属于键值对结构,类型可以是构,类型可以是longlong、stringstring、booleanboolean、floatfloat、intint等。等。6 6)retention policyretention po
19、licy:时序数据库特有的概念,定义时:时序数据库特有的概念,定义时序数据保留策略序数据保留策略,如,如1 1分钟、分钟、5 5分钟策略,即决定数分钟策略,即决定数据保存多久后就可以删除数据。保留策略中还可以据保存多久后就可以删除数据。保留策略中还可以设定集群中的副本个数、设定集群中的副本个数、shardGroupDurationshardGroupDuration等参数。等参数。shardGroupshardGroup是是InfluxDBInfluxDB存储时序数据的一个基本存储存储时序数据的一个基本存储结构。结构。7 7)seriesseries:一个:一个measurementmeasu
20、rement中的存在多个序列中的存在多个序列,索,索引引tagtag集合的键值对与保留策略能够确定一个时间序集合的键值对与保留策略能够确定一个时间序列。列。1911.2 InfluxDB时序数据库简介时序数据库简介 field keyfield key和和field valuefield value对组成的集合称之为对组成的集合称之为field field setset;tag keytag key和和tag valuetag value对组成了对组成了tag tag setset;tagtag和和fieldfield依据依据具体存储需求具体存储需求来来定定;measurementmeasur
21、ement是是fieldsfields,tagstags以及以及timetime列的列的容器;容器;retention policyretention policy为默认的为默认的autogenautogen。它表示数据一直保。它表示数据一直保留永不过期,副本数量为留永不过期,副本数量为1 1。一个数据库可以有多个一个数据库可以有多个measurementmeasurement,retention retention policypolicy。InfluxdbInfluxdb是一是一个模式个模式自由自由的的数据库,可以很容易的数据库,可以很容易的添加新的添加新的measurementmeasu
22、rement,tagstags,fieldsfields等等。2011.2 InfluxDB时序数据库简介时序数据库简介 假设有假设有一张表一张表weatherweather用于记录:多个地区用于记录:多个地区在在不同不同海海拔下一天拔下一天的温度变化,所以表中有以下字段的温度变化,所以表中有以下字段:时间时间 timetime 温度温度 temperaturetemperature 湿度湿度 humidityhumidity 地区地区 areaarea 海拔海拔 altitudealtitude 行数据行数据21Point属性传统数据库中的概念time每个数据记录时间,是数据库中的主索引(会
23、自动生成)fields各种记录值(没有索引的属性)也就是记录的值:温度,湿度tags各种有索引的属性:地区,海拔11.2 InfluxDB时序数据库简介时序数据库简介 SeriesSeries:时序数据可以在图表上画成的线条数,可以:时序数据可以在图表上画成的线条数,可以通过通过tagstags排列组合算出来。排列组合算出来。例如:数据库例如:数据库中有一个表叫中有一个表叫temperaturetemperature 有有两个保留策略,分别表示两个保留策略,分别表示5 5分钟和分钟和1010分钟分钟 tagtag有有locationlocation、roomroom。locationlocat
24、ion有有1010个不同的个不同的值值 roomroom有有100100个不同的值,那么这个个不同的值,那么这个temperaturetemperature有有10 10 x100 x 2 x100 x 2 共共20002000个序列个序列。seriesseries的数量对于的数量对于InfluxDBInfluxDB的性能有很大的影响,的性能有很大的影响,seriesseries数量越数量越多对多对CPUCPU、内存资源的要求越大、内存资源的要求越大。时序时序数据存储时,需根据业务需求注意数据存储时,需根据业务需求注意 fieldfield和和tagtag的设计。的设计。2211.2 Infl
25、uxDB时序数据库简介时序数据库简介 目前稳定版本目前稳定版本1.81.8 打开命令窗口后,打开命令窗口后,cdcd到主目录运行如下到主目录运行如下命令,启动服务:命令,启动服务:influxd.exe-influxd.exe-configconfig influxdb.confinfluxdb.conf 在另一窗口执行以下命令,进入在另一窗口执行以下命令,进入shellshell环境环境 influx.exeinflux.exe2311.2 InfluxDB时序数据库简介时序数据库简介 在在提示符后输入以下命令,可以看到系统默认包含提示符后输入以下命令,可以看到系统默认包含的数据库列表信息。
26、的数据库列表信息。show show databasesdatabases InfluxDBInfluxDB采用的是一种类似采用的是一种类似SQLSQL的语法,例如创建的语法,例如创建数据库语法如下数据库语法如下:create database create database testDBtestDB 切换数据库,注意切换数据库,注意InfluxDBInfluxDB是大小写敏感的是大小写敏感的 use use testDBtestDB 创建默认的时序数据创建默认的时序数据保留保留策略。如下示例,策略。如下示例,设置保设置保存时间存时间3030天,副本为天,副本为1 1 CREATE CREAT
27、E RETENTION POLICY RETENTION POLICY test_retentiontest_retention ON ON testDBtestDB DURATION 30d REPLICATION 1 DEFAULTDURATION 30d REPLICATION 1 DEFAULT2411.2 InfluxDB时序数据库简介时序数据库简介 InfluxdbInfluxdb的操作可以的操作可以使用类使用类SQLSQL语言查询和修改数据语言查询和修改数据。I Influxdbnfluxdb不是一个完整的不是一个完整的CRUDCRUD数据库,它更像是一个数据库,它更像是一个CR
28、-CR-udud数据库。它优先考虑的是增加和读取数据而不是更新和删数据库。它优先考虑的是增加和读取数据而不是更新和删除数据的性能,而且它阻止了某些更新和删除行为使得创除数据的性能,而且它阻止了某些更新和删除行为使得创建和读取数据更加高效建和读取数据更加高效。创建创建表:直接表:直接在插入数据的时候指定表在插入数据的时候指定表名,如果不存在则名,如果不存在则先建表再插入数据。先建表再插入数据。增加数据增加数据insert insert weather,altitudeweather,altitude=1000,area=1000,area=北北 temperature=11,humidity=-
29、temperature=11,humidity=-4 4其中其中:weather weather:表表名名altitude=1000,area=altitude=1000,area=北北 :tagtagtemperature=11,humidity=-4 temperature=11,humidity=-4:fieldfield2511.2 InfluxDB时序数据库简介时序数据库简介 查询查询数据数据 SELECT SELECT*FROM weather ORDER BY time DESC FROM weather ORDER BY time DESC LIMIT LIMIT 3 3 查询
30、表查询表 SHOW MEASUREMENTSSHOW MEASUREMENTS 删除表删除表 DROP DROP MEASUREMENT MEASUREMENT measurementNamemeasurementName 26目录目录概述概述1InfluxDBInfluxDB时序数据库简介时序数据库简介2Apache Apache Jena-TDBJena-TDB简介简介3ElasticsearchElasticsearch4小结小结52728 资源描述框架资源描述框架(RDF)(RDF)模型关键构成:模型关键构成:资源资源(Resource)(Resource):所有以:所有以RDFRDF
31、表示法来描述的东西都表示法来描述的东西都叫做资源,它可能是一个网站,可能是一个网页,叫做资源,它可能是一个网站,可能是一个网页,可能只是网页中的某个部分,甚至是不存在于网络可能只是网页中的某个部分,甚至是不存在于网络的东西,如纸本文献、器物、人等的东西,如纸本文献、器物、人等。在在RDFRDF中,资源是以统一资源标识中,资源是以统一资源标识(URI(URI,Uniform Uniform Resource Resource IndentifiersIndentifiers)来来命名命名 统一统一资源定位器资源定位器(URL(URL,Uniform Resource Locators)Unifo
32、rm Resource Locators)、统一资源名称统一资源名称(URN(URN,Uniform Resource Names)Uniform Resource Names)都都是是URIURI的子集的子集。URIURI是符合一定格式要求的字符串。是符合一定格式要求的字符串。11.3 Apache Jena-TDB简介简介29 属性属性(Properties)(Properties):属性是用来描述资源的特定特征或属性是用来描述资源的特定特征或关系关系 每每一个属性都有特定的意义,用来定义它的属性值一个属性都有特定的意义,用来定义它的属性值(Value)(Value)和它所描述的资源形态,
33、以及和其它属性的关系和它所描述的资源形态,以及和其它属性的关系。RDFRDF的的(Property(Property,Property value)Property value)在概念上和传统的在概念上和传统的(Attribute(Attribute,Attribute value)Attribute value)是相同的。是相同的。陈述陈述(Statements)(Statements):特定的资源以一个被命名的属性特定的资源以一个被命名的属性与相应的属性值来描述,称为一个与相应的属性值来描述,称为一个RDFRDF陈述陈述 其中资源其中资源是主词是主词(Subject)(Subject),属
34、性是述词,属性是述词(Predicate)(Predicate),属性值,属性值则是受词则是受词(Object(Object)陈述陈述的受词除了可能是一个字符串,也可能是其它的资料的受词除了可能是一个字符串,也可能是其它的资料形态形态或是一或是一个资源。个资源。11.3 Apache Jena-TDB简介简介11.3 Apache Jena-TDB简介简介 Apache JenaApache Jena是开是开源源的基于的基于JavaJava的语义的语义网框架,用于链网框架,用于链接数据和构建语义网,可存储接数据和构建语义网,可存储RDFRDF、RDFSRDFS类型数据。类型数据。并且提供了并且
35、提供了TDBTDB和和FusekiFuseki来存储来存储和管理访问三元组。和管理访问三元组。TDBTDB是是JenaJena用于用于RDFRDF存储和查询的模块存储和查询的模块,可以使用命,可以使用命令行或者令行或者Java APIJava API的形式操作的形式操作TDBTDB中的中的RDFRDF数据,数据,TDBTDB支持事务管理支持事务管理。FusekiFuseki模块提供模块提供SPARQLSPARQL服务服务,可以多个进程同时访,可以多个进程同时访问问TDBTDB数据集数据集。JenaJena下载链接为下载链接为https:/jena.apache.org/download/htt
36、ps:/jena.apache.org/download/。3011.3 Apache Jena-TDB简介简介 TDBTDB采用采用B+B+树树维护三维护三种基本形式的三元组种基本形式的三元组索引索引 SPO SPO、POS POS、OSP OSP 注:注:S S、P P、O O分别代表分别代表SubjectSubject、PredicatePredicate和和ObjectObject 建模术语:建模术语:Dataset=Dataset=数据库数据库 ModelModel =表表 一个一个DatasetDataset对象包含多个对象包含多个ModelModel,ModelModel有各自的
37、名有各自的名字,字,DatasetDataset中默认存在一个中默认存在一个DefaultModelDefaultModel。TDBTDB支持数据子集查询功能,也被称为图(支持数据子集查询功能,也被称为图(graphgraph)3111.3 Apache Jena-TDB简介简介数据数据存储管理存储管理操作步骤:操作步骤:1 1)建立)建立DatasetDataset 2 2)装载)装载ModelModel 将将RDFRDF文件的三元组读取到文件的三元组读取到ModelModel中。中。JenaJena操作都是围绕操作都是围绕ModelModel数据结构数据结构展开。展开。3 3)数据持久)数
38、据持久化化 将将ModelModel对象固化到对象固化到TDBTDB文件,完成数据持久化文件,完成数据持久化。4 4)提交和关闭)提交和关闭操作操作 所有所有写操作完成后,提交写操作完成后,提交ModelModel,提交,提交DatasetDataset,进行事,进行事务提交务提交。最后最后关闭关闭ModelModel,关闭,关闭DatasetDataset。3211.3 Apache Jena-TDB简介简介 采用采用Apache JenaApache Jena进行知识存储与访问的步骤进行知识存储与访问的步骤 将将RDFRDF类型数据转换成类型数据转换成TDBTDB类型类型数据数据 配置配置
39、及启动及启动Apache Apache FusekiFuseki、利用、利用SPARQLSPARQL从从Apache Apache JenaJena -TDB-TDB中中进行知识检索进行知识检索。下载下载JenaJena解压后文件夹下解压后文件夹下batbat目录下的目录下的tdbloader.bat tdbloader.bat 可以读取指定路径下的可以读取指定路径下的RDFRDF文件到文件到TDBTDB数据库中。数据库中。然后基于然后基于JavaJava调用调用Jena APIJena API实现对实现对TDBTDB数据库的访数据库的访问;问;下载并启动下载并启动FusekiFuseki服务
40、,使用服务,使用SPARQLSPARQL访问访问TDBTDB数数据库中据库中RDFRDF数据。数据。33目录目录概述概述1InfluxDBInfluxDB时序数据库简介时序数据库简介2Apache Apache Jena-TDBJena-TDB简介简介3ElasticsearchElasticsearch4小结小结53411.4 Elasticsearch ElasticsearchElasticsearch(ESES)是)是一一个采用个采用JavaJava语言语言开发,开源、开发,开源、高高扩展、扩展、分布式的分布式的企业级全文检索引擎企业级全文检索引擎。使用使用LuceneLucene作为
41、核心,实现作为核心,实现所有索引和搜索的功能。所有索引和搜索的功能。可近乎可近乎实时地存储、检索数据,可扩展到上百台服务器,实时地存储、检索数据,可扩展到上百台服务器,处理处理PBPB级别的数据,基于级别的数据,基于RESTful WebRESTful Web接口来隐藏接口来隐藏LuceneLucene的的复杂性,从而让全文搜索变得简单。复杂性,从而让全文搜索变得简单。3511.4 ElasticsearchElasticsearchElasticsearch 的实现原理的实现原理:首先将需检索的数据存储到首先将需检索的数据存储到ElasticsearchElasticsearch 数据库中,
42、数据库中,通过分词通过分词控制器将控制器将对应的语句分词,将其权重和对应的语句分词,将其权重和分词分词结果会一并存储;结果会一并存储;当当用户搜索数据时,根据权重将结果排名、打分,用户搜索数据时,根据权重将结果排名、打分,再将结果呈现给用户再将结果呈现给用户。ElasticsearchElasticsearch数据存储角度,一数据存储角度,一条条数据就是数据就是一个文一个文档,用档,用JSONJSON作为文档序列化的作为文档序列化的格式。格式。下载下载链接为链接为https:/www.elastic.co/cn/downloads/elasticsearchhttps:/www.elastic
43、.co/cn/downloads/elasticsearch。稳定稳定,可靠,快速,安装使用方便,可靠,快速,安装使用方便3611.4 Elasticsearch ElasticsearchElasticsearch技术的核心技术的核心概念概念 1 1)全文)全文索引索引:指对一篇文章进行索引,可以根据:指对一篇文章进行索引,可以根据关键字搜索,类似于关键字搜索,类似于RDBRDB里的里的likelike语句。语句。关键任务:把内容根据词的意义进行分词,然后分别创关键任务:把内容根据词的意义进行分词,然后分别创建索引建索引 底层存储:倒排索引底层存储:倒排索引 左边保存的是一系列字符串,称为词
44、典左边保存的是一系列字符串,称为词典。每个字符串都指向包含此字符串的文档每个字符串都指向包含此字符串的文档(Document)(Document)链表,链表,此文档链表称为倒排表此文档链表称为倒排表(Posting List)(Posting List)3711.4 Elasticsearch 2 2)集群与节点)集群与节点 节点节点:一个运行:一个运行的的ESES实例实例,就是一个节点,就是一个节点。实例。实例指通过指通过./bin/./bin/elasticsearchelasticsearch 命令启动的实例命令启动的实例。一。一台台机器可以机器可以启动几个实例,每个实例就是一个节点。启
45、动几个实例,每个实例就是一个节点。一或多一或多个拥有相同个拥有相同cluster.namecluster.name的节点的节点构成集群。构成集群。特别说明一下,对于单台机器上的实例,如果特别说明一下,对于单台机器上的实例,如果cluster.namecluster.name相同,会自动组成集群相同,会自动组成集群(单播模式单播模式)单播模式下,不同机器上的节点不会组成集群单播模式下,不同机器上的节点不会组成集群。与与单播模式相对应的是组播模式,组播模式下不单播模式相对应的是组播模式,组播模式下不同机器上的节点满足一定条件也会自动发现并组同机器上的节点满足一定条件也会自动发现并组成集群的机制。成
46、集群的机制。3811.4 Elasticsearch 3 3)分片(分片(ShardShard)当当有大量的文档时,数据可以分为较小的分片。有大量的文档时,数据可以分为较小的分片。每个分片放到不同的服务器上每个分片放到不同的服务器上。当查询当查询的索引分布在多个分片上时,的索引分布在多个分片上时,ESES会把查询会把查询发送给每个相关的分片,并将结果组合在一起,发送给每个相关的分片,并将结果组合在一起,这个过程对用户来说是透明的这个过程对用户来说是透明的。从从底层实现底层实现机制角度,机制角度,一个分片就是一个一个分片就是一个LuceneLucene IndexIndex,LuceneLuce
47、ne中包含很多小的中包含很多小的SegmentSegment,SegmentSegment是存储的最小管理单元是存储的最小管理单元。3911.4 Elasticsearch 4 4)副本(副本(RepliaReplia)为为提高查询吞吐量或实现高可用性提高查询吞吐量或实现高可用性,ESES使用使用分片分片副本,每个分片可以有零个或多个副本副本,每个分片可以有零个或多个副本。主主分片可以执行更改索引操作,当主分片不可用分片可以执行更改索引操作,当主分片不可用时,集群会将某个副本提升为新的主分片时,集群会将某个副本提升为新的主分片。ESES中有关数据存储模型方面的关键中有关数据存储模型方面的关键术
48、语术语 1 1)Index =Index =数据库数据库 2 2)Type =Type =表表 1 1个索引下面可以有多个类型。个索引下面可以有多个类型。3 3)DocumentDocument =行行 1 1个个TypeType由多个文档组成。使用由多个文档组成。使用 JSON JSON 文档来表示一个文档来表示一个对象。对象。4011.4 Elasticsearch 5 5)FieldField:字段,一个文档可以有多个:字段,一个文档可以有多个FieldField。6 6)MappingMapping:模式(模式(SchemaSchema)定义,)定义,定义定义索引下的索引下的TypeT
49、ype的字段处理规则的字段处理规则,如,如 索引索引如何如何建立建立 索引类型索引类型 是否是否保存原始索引保存原始索引JSONJSON文档文档 是否是否压缩原始压缩原始JSONJSON文档文档 是否是否需要分词需要分词处理、处理、如何进行分词处理等。如何进行分词处理等。7 7)数据数据操作操作 通过通过GET GET、PUTPUT 、POSTPOST、DeleteDelete实现数据的增实现数据的增、删、删、改、查操作。改、查操作。4111.4 Elasticsearch ES ES 提供提供 Java Java,python python 等等 APIAPI 最新版本使用需要最新版本使用需
50、要java11java11版本版本以上以上 下载,解压后,下载,解压后,ElasticsearchElasticsearch 开箱即开箱即可用。进入可用。进入binbin目录下,输入以下命令启动目录下,输入以下命令启动ESES。elasticsearchelasticsearch ElasticsearchElasticsearch 启动后,也启动了两个端口启动后,也启动了两个端口 9200 9200 和和 93009300 9200 9200 端口:端口:HTTP RESTful HTTP RESTful 接口的通讯端口接口的通讯端口 9300 9300 端口:端口:TCP TCP 通讯端口