ElasticSearch入门学习:基础铺垫与简介
文章目录
声明:以下内容均来自b站 ElasticSearch入门到精通教程,摘录了其中大部分内容,仅为自己学习使用。
一、ElasticSearch基础铺垫
学习ElasticSearch之前我们需要先了解以下什么是全文检索,下面就让我们简单看下它们的概念吧。
1.1 全文检索概念
数据分类:
1、结构化数据: 固定格式,有限长度,例如mysql存储的数据,字段是固定的。
2、非结构化数据: 不定长,无固定格式,例如邮件、word文档、日志。
3、半结构化数据: 结构化与非结构化数据的结合,例如xml、html。
搜索分类:
1、结构化数据搜索: 使用关系型数据库,例如mysql等。
2、非结构化数据搜索: 分为顺序扫描与全文检索。
(1)顺序扫描: 遍历所有的记录进行匹配,效率低,不符合我们的搜索期望。
(2)全文检索:通过一个程序扫描文本中的每一个单词,针对单词建立索引,并保存该单词在文本中的位置及出现的次数。用户查询时,通过之前建立好的索引来查询,将索引中单词对应的文本位置,出现的次数返回给客户。其搜索原理主要分为以下几步:
①内容爬取,停顿词过滤:例如一些无用的像"的"、"了"类的语气词与连接词;
②内容分词,提取关键词;
③根据关键词建立倒排索引;
④用户输入关键词进行搜索。
例如:如下进行的搜索便是类似的一个例子,过滤无效的字分词提取出来关键字,建立倒排索引进行搜索,将搜索结果展现给用户。
1.2 正排索引与倒排索引
正排索引: 主键对应数据。 例如下表,我们有文章ID、文章标题、文章内容。可以通过文章ID找到对应的文章内容,也可以根据文章标题找到文章内容,包括我们的关系型数据库也是如此。
倒排索引: 数据对应主键。倒排索引常使用在搜索引擎当中,是搜索引擎为文档内容建立索引,实现内容快速检索必不可少的数据结构。倒排索引是由单词的集合词典和倒排列表的集合倒排文件组成的。 例如我们有一堆英文句子,将其分词、去重、排序之后便有了一张索引ID、word、出现位置的对应表,可以快速查找到相应关键词在那一句中出现过。
二、ElasticSearch简介
2.1 ElasticSearch简介
ElasticSearch(简称ES): 是一个分布式、可水平扩展的搜索和数据分析引擎,底层为Lucene,是用java开发并且是当前最流行的开源的企业级搜索引擎,能够达到实时搜索,完美封装了Lucene核心库并且设计了友好的Restful-API,使得开发者无需关注底层机制,直接开箱即用;还拥有分片、副本机制解决了集群下性能与高可用问题。 稳定、可靠、快速、安装使用方便,客户端还支持java、C#、PHP、Python、Ruby等多种语言。
应用场景: 在国内,阿里巴巴、腾讯、滴滴、今日头条、饿了么、360安全、小米,vivo 等诸多知名公司都在使用Elasticsearch,主要用于日志搜集分析、用于APP综合搜索、订单系统搜索、企业级网站搜索等方面。除此之外还可以帮助探索海量数据结构化、非结构化数据,按需创建可视化报表、对健康数据设置报警阈值,甚至通过使用机器学习技术自动识别异常状况。
2.2 Restful风格简介
Restful风格: Restful是一种网络应用程序的设计风格和开发方式,基于HTTP,可以使用XML格式定义或JSON格式定义。它不是标准也不是协议,只是一种风格。基于这个风格设计的软件可以更简洁、更有层次、更易于实现缓存等机制。。 RESTFUL适用于移动互联网厂商作为业务接口的场景,实现第三方OTT调用移动网络资源的功能,动作类型为新增、变更、删除所调用资源。
restful风格特点为:
1、每一个URI代表1种资源;
2、客户端使用GET、POST、PUT、DELETE4个表示操作方式的动词对服务端资源进行操作:GET用来获取资源,POST用来新建资源(也可以用于更新资源),PUT用来更新资源,DELETE用来删除资源;
3、通过操作资源的表现形式来操作资源;
4、资源的表现形式是XML或者HTML;
5、客户端与服务端之间的交互在请求之间是无状态的,从客户端到服务端的每个请求都必须包含理解请求所必需的信息。
Restful风格与传统http请求区别:
传统请求方式:http://ip:port/工程名/资源名?请求参数
Restful风格:http://ip:port/工程名/资源名/请求参数/请求参数
2.3 7.x与8.x版本特性
7.x新特性:
1、正式废除单个索引下多Type的支持;
2、7.1开始,Security功能免费使用;
3、ECK-Elasticsearch Operator on Kubernetes;
4、新功能:New Cluster coordination。
这里仅仅列举了一点点新特性,更多7.x特性可以查看:官方文档关于7.x特性的介绍
8.x新特性:
1、Rest API相比较7.x而言做了比较大的改动,比如彻底删除_type;
2、默认开启安全配置;
3、存储空间优化:对倒排文件使用新的编码集,对于keyword、match_only_test、text类型字段有效,有3.5%的空间优化提升,对于新建索引和segment自动生效;
4、优化geo_poiny、geo_shape类型的索引写入效率:15的提升;
5、技术预览版KNN API发布(K临近算法、跟推荐系统、自然语言排名相关)。
这里仅仅列举了一点点新特性,更多8.x特性可以查看:官方文档关于8.x特性的介绍
2.4 ElasticSearch生态圈-Elastic Stack
Elastic Stack: 我们先来了解一下什么是ELK,ELK即ElasticSearch(数据存储和搜索)、Logsstash(数据采集)、Kibana(提供给用户可视化及操作的界面)这三款软件在一起时的简称。在发展过程中又有了Beats(数据采集)的加入,便形成了Elastic Stack。
例如:我们想对Java的日志进行分析,可以先通过beats进行日志采集,采集到redis或者MQ中。完成后利用logstash进行数据过滤,以json格式存储到elasticsearch中,最终利用kibana提供给用户可视化界面查看。
2.5 ElasticSearch与Solr搜索引擎对比
ElasticSearch与Solr搜索引擎对比:
1、Solr 利用 Zookeeper 进行分布式管理;而Elasticsearch 自身带有分布式协调管理功能。
2、Solr 支持更多格式的数据,比如JSON、XML、CSV;而 Elasticsearch 仅支持json文件格式。
3、Solr 在传统的搜索应用中表现好于 Elasticsearch;但在处理实时搜索应用时效率明显低于 Elasticsearch。
4、Solr 是传统搜索应用的有力解决方案;但 Elasticsearch更适用于新兴的实时搜索应用。
更多推荐
所有评论(0)