目录
一、ES简介
1、什么是ElasticSearch?
- ES是Elastic技术栈中核心组件,是一个基于JSON的分布式搜索和分析引擎。
- ES构建于Lucene之上,使用REST API进行数据操作
- Elastic技术栈主要包括ElasticSearch(存储、搜索、分析)、LogStash与Beats(收集、聚合和丰富数据)以及Kibana(数据可视化、管理和检测、解决方案),技术栈简称为ELK
- ES作为分布式文档存储(JSON文档),提供近实时的搜索(使用索引)
- 具有扩展性和弹性
- 默认是集群化的,一个节点也称之为集群!
2、ES的使用场景
ES可用于存储和索引数据,但是一般不会单独使用ES,其典型的应用场景有:
- 将ES作为项目的后端系统:ES不支持事务,可使用版本控制来管理并发;
- 添加到现有系统中提供搜索功能:将ES和其他存储系统相结合,利用其提供高效的数据搜索;
- 作为现有解决方案的后端部分:ELK海量日志数据的存储、搜索和事件分析(借助现有工具,不必从头开始)
3、ES的优势
- ES基于Lucene引入了分片与副本机制,解决了集群下性能和高可用问题
- 查询性能高效,可在毫秒级内返回查询,得益于倒排索引的高效
- 聚合性能高(sum、avg、count等)
二、ES与Solr对比
ES和Solr是具有代表的搜索引擎,二者都是基于核心搜索库Lucene构建的,但他们在扩展性、部署的简易性等方面有很大的不同。
1)Solr在处理静态数据方面优势更大,因为它有缓存,并且能够使用非反向阅读器进行面化和排序(例如电子商务);
另一方面,Elasticsearch更适合并更频繁地用于时间序列数据用例,比如日志分析用例;
2)根据搜索引擎排名显示,ES的受欢迎程度高于Solr;
3)ES在开源日志管理用例中占据主导地位,许多组织使用ES索引其日志,使日志可被搜索;
4)ES更易学;
5)节点发现于集群管理:ES有自己的实现机制,Solr需要使用ZooKeeper进行节点发现与主节点选取;
6)分片放置:ES对索引和分片的放置是比较动态的,而Solr往往是静态的;
7)缓存:segment(段)是Lucene索引的一部分,它由不同的文件组成,大部分是不可变的,并且包含数据。当你索引数据的时候,
Lucene会产生段,并在段合并的过程中合并多个已存在的较小的段到更大的段。
Solr具有全局缓存,即一个给定类型的shard的单个缓存实例,用于shard的所有分段。当一个段发生变化时,整个缓存都失效并需刷新。这需要时间和硬件资源。
在ES中缓存是按段进行的,如果只更改了一个段,那么缓存的数据中只有一小部分会失效并进行刷新。
8)机器学习:ES可通过插件支持机器学习算法,重点研究时间序列数据中的异常检测和异常值检测。
三、ES安装及使用示例
1、安装ES
- 根据自己的操作系统和需要下载相应的版本ElasticSearch
- 将下载后的文件进行解压,本文以Windows10系统下ElasticSearch-7.11.2为例说明ES的使用
解压后文件目录如下所示:
- 进入bin目录,单击elasticsearch.bat文件,则启动ES集群
下图展示了加载过程中的部分信息:
- 验证集群是否启动成功,在地址栏输入http://localhost:9200/,展示如下信息,表示 集群启动成功
2、安装可视化界面 elasticsearch-head
1)nodejs环境安装
elasticsearch-head是一个基于node.js的前端项目,所以使用它必须实现安装好node.js的相关环境
下图展示了nodejs安装中的一个主要操作,完成相关操作后添加环境变量NODE_PATH,具体操作可参考nodejs安装
2)elasticsearch-head安装
下载elasticsearch-head;github的教程中含有不同的安装方式,本文使用第一种Running with built in server
输入上述地址后,显示如下信息:
上述信息的显示,需要重启ES服务,重新连接
解决跨域问题:IP地址、端口,再elasticsearch.yml中添加如下信息:
http.cors.enabled: true
http.cors.allow-origin: "*"
四、Kibana的安装
Kibana是通向Elastic产品集的窗口,它可以在ES中对数据进行探索和分析。
- 下载Kibana,需要注意的是Kibana的版本需要和ES的版本保持一致
- 解压Kibana,信息如下
- 进入bin目录下,执行kibana.bat脚本
- 查看http://localhost:5601信息,显示如下页面,表明Kibana安装成功
- 汉化Kibana,在config目录下的kibana.yml文件中,添加信息 i18n.locale: "zh-CN" 然后重启kibana服务