本文中使用的 ES 为 7.x 版本。
一、Elasticsearch介绍
1.1 介绍
Elasticsearch(以下简称 ES)是一个开源的高扩展的分布式全文搜索引擎,它可以近乎实时的存储、查询数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。
ES 的底层是开源库 Apache Lucene,由于Lucene 库的原理十分复杂,还需要我们自己写代码实现接口,所以 ES 就使用 RESTful 风格的 API 封装了 Lucene,使其更加简单易用。
1.2 安装(Ubuntu 20.04)
-
导入 ES 的 PGP 密钥:
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
-
上安装 apt-transport-https 包:
sudo apt-get install apt-transport-https
-
添加存储库:
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-7.x.list
-
安装 ES:
sudo apt-get update && sudo apt-get install elasticsearch
-
启动服务:
sudo systemctl start elasticsearch.service
-
测试安装:
curl -X GET "localhost:9200/?pretty"
出现主机、版本等信息,就说明安装成功。
-
设置开机自启动(可选):
sudo systemctl enable elasticsearch.service
1.3 安装 Kinaba (官方客户端,可选)
-
到官网下载压缩包:传送门,这里以 windows 系统为例。
-
解压到合适的目录。
-
修改 config/kibana.yml 文件,找到 elasticsearch.hosts,去掉注释,改为 ES 的链接地址:
elasticsearch.hosts: ["http://localhost:9200"]
-
运行 bin/kibana.bat(windows下)。
-
用浏览器打开 http://localhost:5601。
-
主要是使用 dev tools,其他的看着玩玩。
1.4 核心概念
-
集群(Cluster):
ES 可以运行在许多互相合作的服务器上,以实现容错和高可用性,这些服务器的集合称为集群。
-
节点(Node):
集群中的每一个服务器称为一个节点。
-
分片(Shard):
所有数据存储的最小单元块。
-
副本(Replia):
副本是一个分片的精确复制,可以提高查询吞吐量或实现高可用性。每个分片可以有零个或多个副本。
-
全文查询(Full-text Search):
全文索引就是把内容根据词的意义进行分词,然后分别创建索引,例如”今日是周日我们出去玩” 可能会被分词成:“今天“,”周日“,“我们“,”出去玩“ 等token,这样当你搜索“周日” 或者 “出去玩” 都会把这句搜出来。
1.5 与 MySQL 对比
ES 本质上是一个分布式数据库,所以,其中的很多概念在关系型数据库中都能找到与之相类似的概念。
ES | MySQL |
---|---|
Index 索引 | Database 数据库 |
Type 类型(7.x 版本后被移除!) | Table 表 |
Document 文档 | Row 记录或行 |
Field 字段 | Column 字段或列 |
Mapping 映射 | Schema 结构 |
Everything is indexed | Index 索引 |
Query DSL | SQL |