Elasticsearch笔记(一):简介及安装
在上一章已经分享过《Solr vs Elasticsearch》,接下来几周将陆续分享我之前的学习笔记,所有内容将基于es 6.2.x版本展开。ElasticSearch是一个基于Lucene构建的开源,分布式,RESTful搜索引擎。它用 Java 编写的,它的内部使用 Lucene 做索引与搜索,目的是使全文检索变得简单,设计用于云计算中,能够达到实时搜索,稳定,可靠,使用简单方便(使用J..
在上一章已经分享过《Solr vs Elasticsearch》,接下来几周将陆续分享我之前的学习笔记,所有内容将基于es 6.2.x版本展开。
ElasticSearch是一个基于Lucene构建的开源,分布式,RESTful搜索引擎。它用 Java 编写的,它的内部使用 Lucene 做索引与搜索,目的是使全文检索变得简单,设计用于云计算中,能够达到实时搜索,稳定,可靠,使用简单方便(使用JSON进行数据索引,通过隐藏 Lucene 的复杂性,取而代之的提供一套简单一致的 RESTful API)。
目录
1. 诞生:回忆时光
许多年前,一个刚结婚的名叫 Shay Banon 的失业开发者,跟着他的妻子去了伦敦,他的妻子在那里学习厨师。 在寻找一个赚钱的工作的时候,为了给他的妻子做一个食谱搜索引擎,他开始使用 Lucene 的一个早期版本。
直接使用 Lucene 是很难的,因此 Shay 开始做一个抽象层,Java 开发者使用它可以很简单的给他们的程序添加搜索功能。 他发布了他的第一个开源项目 Compass。
后来 Shay 获得了一份工作,主要是高性能,分布式环境下的内存数据网格。这个对于高性能,实时,分布式搜索引擎的需求尤为突出, 他决定重写 Compass,把它变为一个独立的服务并取名 Elasticsearch。
第一个公开版本在2010年2月发布,从此以后,Elasticsearch 已经成为了 Github 上最活跃的项目之一,他拥有超过300名 contributors(目前736名 contributors )。 一家公司已经开始围绕 Elasticsearch 提供商业服务,并开发新的特性,但是,Elasticsearch 将永远开源并对所有人可用。
据说,Shay 的妻子还在等着她的食谱搜索引擎…
2. 发展历程及ELK
Elasticsearch 后来作为一家公司(Elastic公司)进行运作,定位为数据搜索和分析平台。在2014年6月获得7000万美元融资,累积融资过亿美元。ES现在可以与Java、Ruby、Python、PHP、Perl、.NET等多种客户端集成。也可与Hadoop、Spark等大数据分析平台进行集成,功能十分强大。基于Elasticsearch衍生出了一系列开源软件,统称为 Elatic Stack。
Elasticsearch | 最早期的最核心的ES |
Logstash | 可以把Logstash理解成流入、流出ES的传送带。 支持:不同类型的数据或实施数据流经过 Logstash写入ES或者从ES中读出写入文件或对应的实时数据流。 包括:
|
Kibana | Kibana是ES大数据的图形化展示工具。集成了DSL命令行查看、数据处理插件、继承了 x-pack(收费)安全管理插件等。 |
beats | Beats是一个开源的用来构建轻量级数据汇集的平台,可用于将各种类型的数据发送至Elasticsearch与Logstash。 Beats目前有官方支持的多个子产品,如下:
|
当然了,它官方产品远不止这些,还有更多
3. 应用场景
- 站内搜索
- Nosql数据库
- 日志分析
- 数据分析
4.版本历程
当前版本为ES 6.x(最高6.4,使用Lucene7.4),ES大的版本主要以2.x、5.x、6.x系列为主。可以通过http://localhost:9200/?pretty,查看ES集群版本信息。
1. 历史版本更迭:
- 2010年2月8日推出了 V0.4.0 的发行版本,2010年2月12日推出 V1.0.0 版本,2016年2月2日推出 V1.7.5版本,此为1.X最终版本,不再更新
- 2015年10月28日推出 V2.0.0 版本,2017年7月25日推出 V2.4.6 版本,此为 2.X 最终版本,不再更新。
- 2016年10月26日推出 V5.0.0 版本,2018年2月20日推出 V5.6.8 版本,此并不是 5.X 的最终版本,还在更新中……
- 2017年11月14日推出 V6.0.0 版本,2018年2月20日推出 V6.2.2 版本。
2. ELK版本:
在Elasticsearch5.X 之前的版本中,Kibana和Logstash 各有自己的一套版本管理体系(如:Kibana4.X 对应 Elasticsearch2.3.X)。为统一规范化版本管理,Elasticsearch 跃过 3.X 大版本、4.X 大版本,直接和 Kibana、Logstash、Feat 升级为相同的 5.X、6.X 乃至以后的 7.X 版本。
3. 版本兼容情况:
★ ES 6.x可以使用在ES 5.x中创建的索引,但不能使用在Elasticsearch 2.x或之前创建的索引
★ ES 5.x可以使用在ES 2.x中创建的索引,但不能使用在1.x或之前创建的索引
★ ES 2.X 不建议再以2.X、1.X或更早的版本进行学习
- 1.从版本历史可以看出,近7年多的 ELK Stack 得到长足的发展
- 2.早期版本的一些设计缺陷历史问题、一些开源社区 Bug,在新版本都已经纠正
- 3.新版本在性能方面也得到较大幅度的提升。
4. 5.X 哪个版本相对稳定?
为何专门强调5.x版本呢?据调查这个系列在生产环境大规模使用(也很多还是2.x),根据一位携程架构师wood于2017年11月29日表示的,生产环境 5.3.2 有大规模部署,稳定性还不错。测试环境也有部署 5.6.4,目前也没发现什么不稳定的问题。
5. 我是新手该从哪个版本开始?
个人建议新手从最新的版本6.x开始学,主要原因是:
★ 由于ELK都是开源的,历史版本发现的问题,GitHub 上的 issue 都已经得到解决
★ 新的大版本往往都做过比较大的改动
★ 社区里有很多文章都太旧了,已结不适用了(研究的价值不大),比如这里分享点
- ES 5.X新增keyword和text,已经没有string类型
- ES 6.X不再支持1个index下有多个type,而是变成严格意义的一对一的关系,因此修改_mapping只能新建一个index,更多
缺点也有:最新版本ES插件的支持可能没有那么好、新特性未被实际的生产环境做过最充分验证,其实这些也不是什么问题。
5. 最高效工具
学习es掌握最高效工具是非常必要的,下面将分享一些
1. Kibana
推荐理由:除了支持各种数据的可视化之外,最重要的是支持 Dev Tool 进行 RESTFUL API 增删改查操作。比 Postman 工具和 cURL 都要方便
2. head
推荐理由:可实现ES集群状态查看、索引数据查看、ES DSL 实现(增、删、改、查操作),比较实用的地方是 JSON 串的格式化
3. Cerebro
推荐理由:用于实现 ES 集群状态查看(堆内存使用率、CPU使用率、内存使用率、磁盘使用率)
4. ElasticHD
推荐理由:其强势功能包括支持SQL转DSL,不要完全依赖,可以借鉴用
5. 中文分词工具
推荐理由:有 IK分词、ANSJ分词、结巴分词,建议使用选用 IK 分词,了解更多
6. elasticsearch-SQL
推荐理由:类SQL查询工具,其支持的 SQL,极大缩小了复杂 DSL 的实现成本
7. 测试工具profile
推荐理由:在原来执行的 DSL 的基础上新增 profile参数,如"profile": true,我把它称作“测试工具”。profile API的目的是,将 ES 高层的 ES 请求拉平展开,直观的让你看到请求做了什么,每个细分点花了多少时间。
8. 性能分析工具rally
推荐理由:推荐rally。相比传统的发包请求测试工具,rally 更加直观和准确、且指标很丰富
6. 安装
首先下载ES安装包,接下来解压(tar -xvf elasticsearch-6.2.4.tar.gz),启动并指定参数(./elasticsearch -Ecluster.name=my_cluster -Enode.name=my_node1),非常简单,了解更多
访问地址:http://localhost:9200/
注:必须JDK1.8版本
1. 配置介绍
elasticsearch.yml
for configuring Elasticsearchjvm.options
for configuring Elasticsearch JVM settingslog4j2.properties
for configuring Elasticsearch logging
2. 主要配置
到这里基本上已经结束了,下一篇将介绍ES的核心概念及架构。
更多推荐
所有评论(0)