ES笔记一:周边工具

ElasticSearch是一个基于Lucene构建的开源,分布式,RESTful搜索引擎。它用 Java 编写的,它的内部使用 Lucene 做索引与搜索,目的是使全文检索变得简单,设计用于云计算中,能够达到实时搜索,稳定,可靠,使用简单方便(使用JSON进行数据索引,通过隐藏 Lucene 的复杂性,取而代之的提供一套简单一致的 RESTful API)。

目录

1. 诞生:回忆时光

2. 发展历程及ELK

3. 应用场景

4.版本历程

5. 最高效工具

1. Kibana

2. head

3. Cerebro

4. ElasticHD

5. 中文分词工具

6. elasticsearch-SQL

7. 测试工具profile

8. 性能分析工具rally

6. 安装

1. 配置介绍

2. 主要配置


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中读出写入文件或对应的实时数据流。

 包括:

  • 本地或远程文件;
  • Kafka 实时数据流——核心插件有 logstashinputkafka/logstashoutputkafka;
  • MySQL、Oracle 等关系型数据库——核心插件有 logstashinputjdbc/logstashouputjdbc;
  • Mongo 非关系型数据库——核心插件有 logstashinputmongo/logstashoutputmongo;
  • Redis 数据流;
Kibana Kibana是ES大数据的图形化展示工具。集成了DSL命令行查看、数据处理插件、继承了 x-pack(收费)安全管理插件等。
beats

Beats是一个开源的用来构建轻量级数据汇集的平台,可用于将各种类型的数据发送至Elasticsearch与Logstash。

Beats目前有官方支持的多个子产品,如下:

  • Packetbeat:用于监控局域网内服务器之间的网络流量信息;
  • Filebeat:收集服务器上的日志信息——它是用来替代Logstash Forwarder的下一代Logstash收集器,是为了更快速稳定轻量低耗地进行收集工作,它可以很方便地与 Logstash还有直接与Elasticsearch进行对接。
  • Metricbeat:新推出的 可以定期获取外部系统的监控指标信息
  • Winlogbeat:Windows事件日志轻量级工具
  • Auditbeat:审计数据的轻量级工具
  • Heartbeat:用于时间监控的轻量级工具

当然了,它官方产品远不止这些,还有更多

3. 应用场景

  • 站内搜索
  • Nosql数据库
  • 日志分析
  • 数据分析

4.版本历程

当前版本为ES 6.x(最高6.4,使用Lucene7.4),ES大的版本主要以2.x、5.x、6.x系列为主。可以通过http://localhost:9200/?pretty,查看ES集群版本信息。

1. 历史版本更迭:

  1. 2010年2月8日推出了 V0.4.0 的发行版本,2010年2月12日推出 V1.0.0 版本,2016年2月2日推出 V1.7.5版本,此为1.X最终版本,不再更新
  2. 2015年10月28日推出 V2.0.0 版本,2017年7月25日推出 V2.4.6 版本,此为 2.X 最终版本,不再更新。
  3. 2016年10月26日推出 V5.0.0 版本,2018年2月20日推出 V5.6.8 版本,此并不是 5.X 的最终版本,还在更新中……
  4. 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 Elasticsearch
  • jvm.options for configuring Elasticsearch JVM settings
  • log4j2.properties for configuring Elasticsearch logging

2. 主要配置

螃蟹在剥我的壳,笔记本在写我,漫天的我落在枫叶上雪花上,而你在想我。 --章怀柔
原文地址:https://www.cnblogs.com/lovezhr/p/14415329.html