文章目录
前言
通过本篇elasticsearch入门教学,你能真正了解和使用elasticsearch进行开发,本篇适用于小白和一些有编程经验但是没有深入了解es的人
一、Elasticsearch简介
elasticsearch是使用Java编写的一种开源搜索引擎,也是一种分布式的搜索引擎架构,可以动态拓展多个节点进行对等架构,它在内部使用Luence做索引与搜索,通过对Lucene的封装,提供了一套简单一致的RESTful API,近实时操作也为他作为搜索引擎提供了支撑。
二、安装
1.Elasticsearch安装
下载链接:https://www.elastic.co/cn/downloads/elasticsearch
elasticsearch是免安装的,把 zip 包解压就可以了。
———————————————————————————
1.点击bat文件打开es(前提是JDK环境已经配置完毕)
2.命令行执行效果,
注意:所有执行失败都是环境没有配置或者版本不对应,jdk1.8对应elasticsearch.x版本,jdk14以上对应elasticsearch.x版本
3.访问127.0.0.1:9200,证明es安装成功
4.安装可视化工具,可视化工具有多种选择,我们这里安装的是elasticsearch-head-master
下载连接:elasticsearch-head下载
5.进入命令行输入npm run start 启动head插件后访问http://192.168.182.73:9100/
如此基本的安装环境就好了,下面咱们一起了解一下elasticsearch的基本概念和使用
三.ElasticSearch核心概念
1.数据库比对
elasticSearch | mysql数据库 |
---|---|
index (索引) | database(数据库) |
type(类型) | 数据库中的表 |
document (文档) | 数据库表每条数据 |
shard(分片) | ES会把一个节点的数据进行分片存储,分布式存储在每个节点上 |
replca(副本) | 能正常提供查询和插入的分片我们叫做 primary shard,其余的我们就管他们叫做 replica shard(备份的分片,创建一个库的时候 |
2.详解概念
- index可以包含多个type,同样一个index下面也可以有多个shard
- 在ES里面每个shard就是最小的一个工作单元,承载了部分数据
- 如果在ES集群里面增加或减少节点,shard会自动的实现负载均衡
- primary shard乐意进行读和写,replica shard负责读
- primary shard在创建index的时候就固定了,不能修改了。
- 默认创建一个index的时候,primary shard的数量是5,replica的数量是1,也就是说默认情况下有10个shard,其中有5个primaryshard,5个是replica shardprimary
- shard和自己的replica shard是不能在同一台服务器上的。
3.ES中的搜索引擎原理
- 反向索引又叫倒排索引,是根据文章内容中的关键字建立索引。 搜索引擎原理就是建立反向索引。
- Elasticsearch 在 Lucene的基础上进行封装,实现了分布式搜索引擎。 Elasticsearch 中的索引、类型和文档的概念比较重要,类似于 MySQL中的数据库、表和行。 Elasticsearch 也是 Master-slave 架构,也实现了数据的分片和备份。
- Elasticsearch 一个典型应用就是 ELK 日志分析系统。
四.ES的集群搭建和使用
1.集群构建
ES里面默认有一个配置,clustername 默认值就是ElasticSearch,如果这个值是一样的就属于同一个集群,不一样的值就是不一样的集群,若动态添加节点,ES会自动负载均衡,对等架构和Master-slave略微有些区别,不过总体es还是数据主从模式的。
2.Master
- 管理集群的元数据,比如说索引的创建,和删除等等
- 集群里面master也是自动选举的。
3.对等架构
对于ES可称为对等架构,当客户端进行数据操作和访问时,ES会随意找到一个节点,这个节点不一定有我们需要的数据,每个ES里面都知道其他的数据存在哪,ES的节点会自动帮你把请求发到要查询数据的节点上。这样就真的查询出来了。而我们随意找的这个节点叫做协调节点,真正数据存放的节点会把数据返回给协调节点。协调节点返回数据。
4.容错机制
如果三台机器a,b,c,a是master挂了,重新选举一个master,假如是b,然后master会把挂了的分片在master中将副本提升为分片,如果重启了a,namea中的分片全部变成了副本,然后找各自的主分片同步数据
5.端口问题
9200端口是 ElasticSearch 节点与外部通讯使用的端口。它是 http 协议的 RESTful 接口(各种CRUD操作都是走的该端口,例如查询:http://localhost:9200/user/_search);9300端口是 ElasticSearch 节点之间通讯使用的端口。它是 tcp 通讯端口,集群间和 TCPclient 都走的此端口,所以 Java 程序中使用 ElasticSearch 时,在配置文件中要使用 9300 端口。
总结
这里讲解了es基本的使用和一些原理,后面会详细介绍源码和核心原理,这篇对于小白来讲完全够用,希望大家多多点赞收藏,我会继续发布更优质的作品进行分享