基本知识点:
图标:
定义:
简称为es
es是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据
本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据
es也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,
但是,它的目的是通过简单的 RESTful APl 来隐藏 Lucene的复杂性,从而让全文搜索变得简单
据国际权威的数据库产品评测机构DBEngines的统计,在2016年1月,Elasticsearch已超过Solr等,成为排名第一的搜索引擎类应用
那么,什么又是 Lucene
呢?
扩展 —— Lucene 简介:
Lucene是apache软件基金会4 jakarta项目组的一个子项目,
是一个 开源 的 全文检索引擎工具包,
但它不是一个 完整的全文检索引擎,而是一个 全文检索引擎的架构,
提供了完整的 查询引擎 和 索引引擎,部分文本分析引擎(英文与德文两种西方语言)
Lucene的目的是为软件开发人员提供一个简单易用的 工具包,
以方便的在 目标系统 中实现 全文检索 的功能,或者是以此为基础建立起 完整的全文检索引擎
有关ES,还流传着一段诙谐的故事:
传言:
多年前,一个叫做Shay Banon的刚结婚不久的失业开发者,
由于妻子要去伦敦学习厨师,他便跟着也去了。
在他找工作的过程中,为了给妻子构建一个食谱的搜索引擎,他开始构建一个早期版本的Lucene.
直接基于Lucene工作会比较困难,所以Shay开始抽象Lucene代码以便va程序员可以在应用中添加搜索功能。
他发布了他的第一个开源项目,叫做"Compass"。
后来Shay找到一份工作,这份工作处在高性能和内存数据网格的分布式环境中,
因此高性能的、实时的、分布式的搜索引擎也是理所当然需要的。
然后他决定重写Compass库使其成为一个独立的服务叫做Elasticsearch。
第一个公开版本出现在2010年2月,在那之后Elasticsearch已经成为Github上最受欢迎的项目之一,代码贡献者超过300人。
一家主营Elasticsearch的公司就此成立,他们一边提供商业支持一边开发新功能,不过Elasticsearch将永远开源且对所有人可用。
但是,Shay的妻子依旧等待着她的食谱搜索…
但是,在如今的工作岗位要求中,我们经常能看到一个 和ElasticSearch齐名 的 搜索引擎 —— Solr
ES 和 Solr:
请观看本人博文 —— 《【ElasticSearch框架学习】ES与Solr 浅析》
那么,基本的介绍 以及 与Solr的区别和联系 就讲解完了
在当代,只要谈及 ES,就会有个名词 被顺带着 讲解到 —— ELK:
ELK 概述:
概念:
ELK 是 Elasticsearch、Logstash、Kibana 三大开源架构 的 首字母大写简称
市面上也被成为Elastic Stack,其中Elasticsearch是一个基于Lucene、分布式、通过Restful方式进行交互的近实时搜索平台框架,
像类似百度、谷歌这种大数据全文搜索引擎的场景都可以使用Elasticsearch作为底层支持框架,
可见Elasticsearch提供的搜索能力确实强大,
市面上很多时候我们简称Elasticsearch为es
Logstash 是 ELK 的 中央数据流引擎,用于从不同目标(文件/数据存储/MQ)收集的不同格式数据,
经过过滤后支持输出到不同目的地(文件MO/edis/elastsearchak等),
Kibana 可以将elasticsearch的数据通过友好的页面展示出来,提供实时分析的功能
市面上很多开发只要提到ELK能够一致说出它是一个 日志分析架构技术栈 总称,
但实际上,ELK不仅仅适用于 日志分析,它还可以支持其它任何数据分析和收集的场景,日志分析和收集只是更具有代表性,并非唯一性
下面,本人通过一张图,来展示下 ELK的分工流程:
分工流程:
那么,为了进行后面的讲解内容,
本人先来讲解下 ELK 中的 ElasticSearch 的 安装:
ElasticSearch 安装:
请观看本人博文 —— 《【ElasticSearch框架学习】ElasticSearch安装 详解》
Kibanna 安装:
请观看本人博文 —— 《【ElasticSearch框架学习】Kibana安装 详解》
IK分词器:
请观看本人博文 —— 《【ElasticSearch框架学习】IK分词器 详解》
在上文的学习中,同学们应该大致了解了 ES服务的安装与启动 以及 ES的定义和各种相关知识点
那么,下面本人就来讲解下 ES的核心概念:
核心概念:
请观看本人博文 —— 《【ElasticSearch框架学习】核心概念 详解》
为了下文中 ES的基本语法 的讲解,本人来介绍下 当前版本 ES中的 字段类型:
字段类型:
常见数据类型:
类型 | 描述 |
---|---|
binary | 二进制值编码为Base64字符串 |
boolean | true和false取值 |
Keywords | 关键字家庭 其中包括keyword,constant_keyword,和wildcard |
Numbers | 数值类型 例如:long和double,用于表示 数量 |
Datas | 日期类型,包括date和 date_nanos |
alias | 为现有字段定义别名 |
对象关系类型:
类型 | 描述 |
---|---|
object | JSON对象 |
flattened | 整个JSON对象作为单个字段值 |
nested | 保留其子字段之间关系的JSON对象 |
join | 为同一索引中的文档定义父/子关系 |
数组:
在Elasticsearch中,数组 不需要 专用的字段数据类型
默认情况下,任何字段 都可以包含 零个或多个 值,
但是,数组中的所有值 都必须 具有 相同的字段类型
其它类型:
更多数据类型,请访问下方链接:
https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-types.html
那么,了解完 字段类型 之后,本人就来讲解下 ES的基本语法 —— Restful命令
(注意:并不是说只能用 Restful命令,Restful命令是当前最流行的一种ES语法)
Restful命令:
请观看本人博文 —— 《【ElasticSearch框架学习】Restful命令 详解》
在我们之前使用 数据库 进行 查询 的过程中,
几乎所有的查询都是 需要条件 的
因此,在我们使用ES进行查询的时候,业务也几乎都是需要 条件查询 的
那么,现在,本人就来讲解下如何使用 ES 进行 条件查询:
条件查询:
请观看本人博文 —— 《【ElasticSearch框架学习】条件查询 详解》
SpringBoot 集成 ES:
请观看本人博文 —— 《【ElasticSearch框架学习】SpringBoot 集成 ElasticSearch》
官方文档:
若同学们还对于elasticsearch框架的基本知识点抱有疑问,请访问下面的官方文档链接:
elasticsearch的 官方文档:
https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html