你能get到的知识点?
1.ES简介以及同类产品对比2.ES的基础概念3.ES head的安装4.ES的单节点安装与集群式安装
本文首发于CSDN,作者:lomtom 原文链接:https://blog.csdn.net/qq_41929184/article/details/116799994 你的支持就是我最大的动力。
一、概述
什么是ElasticSearch?
ElasticSearch:高可用的分布式搜索引擎(一般简称为ES),可用于实时存储、检索数据,使用Restful API隐藏Lucene的复杂性,可以让全文搜索变得简单
1.功能及特点:
1.分布式的搜索引擎与数据分析(可拓展到上百台服务器) 2.全文检索、结构化检索(检索是使用倒排来实现的) 3.对海量数据进行实时处理(支持PB级别数据)
2.使用场景: 可用于大数据、数据清洗等等 3.目前使用:
代码语言:javascript复制
4.背景: 一个码农失业,给老婆写了一个菜谱的简单搜索引擎,找到工作后,将初版本的搜索引擎进一步迭代,就有了最开始的ElasticSearch。
同类对比:ES vs Solr
1.es基本是开箱即用(解压就可以用) ,非常简单,Solr安装略微复杂- 丟丢!2.Solr 利用Zookeeper进行分布式管理,而Elasticsearch自身带有分布式协调管理功能。3.Solr 支持更多格式的数据,比如SON. XML、 CSV ,而Elasticsearch仅支持json文件格式。4.Solr 官方提供的功能更多,而Elasticsearch本身更注重于核心功能。高级功能多有第三方插件提供,例如图形化界面需要 kibana友好支撑5.Solr 查询快,但更新索引时慢(因为可能会导致IO阻塞)
•ES建立索引快, 即实时性查询快,用于facebook新浪等搜索。 •Solr是传统搜索应用的有力解决方案,但Elasticsearch更适用于新兴的实时搜索应用。 •插入数据时,Solr会有明显的搜索效率的降低,而ES不会。
6.Solr比较成熟,有一一个更大,更成熟的用户、开发和贡献者社区,而Elasticsearch相对开发维护者较少,更新太快,学习使用 成本较高。 7.ES在未来成为趋势
二、入门
ES基本概念
(1)Near Realtime(NRT):近实时,两个意思,从写入数据到数据可以被搜索到有一个小延迟(大概1秒);基于es执行搜索和分析可以达到秒级
(2)Cluster:集群,包含多个节点,每个节点属于哪个集群是通过一个配置(集群名称,默认是elasticsearch)来决定的,对于中小型应用来说,刚开始一个集群就一个节点很正常 (3)Node:节点,集群中的一个节点,节点也有一个名称(默认是随机分配的),节点名称很重要(在执行运维管理操作的时候),默认节点会去加入一个名称为“elasticsearch”的集群,如果直接启动一堆节点,那么它们会自动组成一个elasticsearch集群,当然一个节点也可以组成一个elasticsearch集群
(4)Index:索引,包含一堆有相似结构的文档数据,类似于数据库中的一个表,例如一个用户表。(5)Type:类型,每个索引里都可以有一个或多个type,type是index中的一个逻辑数据分类,一个type下的document。在7.X版本被弃用,使用_doc代替。
在7.X前把index比作数据库名,把type比作表名更加合适,但是在7.X后,type被ES弃用,所以将index比作表,而type就没有啥实际意义,只是迭代的遗留产物,官方在后续版本将彻底弃用type。
(6)Document:文档,es中的最小数据单元,类似于数据库中表的一行数据。例如用户表中的某一行数据。
(7)shard:单台机器无法存储大量数据,es可以将一个索引中的数据切分为多个shard,分布在多台服务器上存储。有了shard就可以横向扩展,存储更多数据,让搜索和分析等操作分布到多台服务器上去执行,提升吞吐量和性能。每个shard都是一个lucene index。(8)replica:任何一个服务器随时可能故障或宕机,此时shard可能就会丢失,因此可以为每个shard创建多个replica副本。replica可以在shard故障时提供备用服务,保证数据不丢失,多个replica还可以提升搜索操作的吞吐量和性能。primary shard(建立索引时一次设置,不能修改,默认5个),replica shard(随时修改数量,默认1个),默认每个索引10个shard,5个primary shard,5个replica shard,最小的高可用配置,是2台服务器。
1.集群名:在config/elasticsearch.yml
中配置,如果需要配置集群,所有的节点名字的集群名字必须一致
2.如何查看节点状态:
代码语言:javascript复制
在一个不包含任何索引的空集群中,它将会有一个类似于如下所示的返回内容:
代码语言:javascript复制
status 字段是我们最关心的。
status 字段指示着当前集群在总体上是否工作正常。它的三种颜色含义如下:
-- 绿色(green):健康状态,所有的主分片和副本分片都正常运行。-- 黄色(yellow):警告状态,所有的主分片都正常运行,但不是所有的副本分片都正常运行。-- 红色(red):错误状态,有主分片没能正常运行。
三、安装
以前我有一篇文章专门介绍怎么使用docker去安装ES,感兴趣的看一下:传送门[1]
1 ElasticSearch Head
ElasticSearch Head可用于ES的可视化。
安装:
我们通常可以通过两种方法来使用他:
1.浏览器插件:谷歌应用商店:https://chrome.google.com/webstore/detail/elasticsearch-head/ffmkiejjmecolpfloofpjologoblkegm/related?utm_source=chrome-ntp-icon
2.ES head的源码:https://github.com/mobz/elasticsearch-head/releases
简单的几部就可以使用ES head:(前提是有node环境,并且安装npm)
•git clone git://github.com/mobz/elasticsearch-head.git
•cd elasticsearch-head
•npm install
•npm run start
•open
http://localhost:9100/
2 单节点安装
Support Matrix: https://www.elastic.co/cn/support/matrix
启动:1、直接下载:进入到 bin 目录下,直接执行 elasticsearch 启动即可。
2、docker下载:启动容器即可启动ElasticSearch
验证:进入http://localhost:9200/,出现如下信息即为成功,
代码语言:javascript复制
ES的目录以及含义:
目录 | 含义 |
---|---|
modules | 依赖模块目录 |
lib | 第三方依赖库 |
logs | 输出日志目录 |
plugins | 插件目录 |
bin | 可执行文件目录 |
config | 配置文件目录 |
data | 数据存储目录 |
3 分布式(集群)安装
•一主二从•master 的端口是 9200,slave 端口分别是 9201 和 9202
1、如果是docker安装,只需要注意端口映射,以及配置的ip即可,
代码语言:javascript复制
2、如果是压缩包,解压后修改相应的config/elasticsearch.yml
即可
然后启动三台机器,使用head插件进行查看
4 可视化工具kibana
常常我们需要一个图表式的可视化,kibana就是一个不错的选择。
1、docker安装:见我另一篇文章[3]
2、压缩包安装:https://www.elastic.co/cn/downloads/kibana
四、你可能会遇到的问题:
1、出现黄色警告
黄色(yellow)的详细解释[4]
2、ES跨域问题:
可能会遇到的问题:在安装ES head和ES后,打开插件或者head地址,如果未出现相关节点信息可能是因为未配置跨域
打开 config/elasticsearch.yml 文件
代码语言:javascript复制
启动: