elasticSearch核心概念的介绍
前言
我们可以想象一下我在使用数据库查询数据的时候我们应该怎么做?假设我们在使用mysql数据库存储一些数据,我们该如何操作的?
- 建立数据库->建表->插入数据->查询
- 索引
- 一个索引可以理解成一个关系型数据库
- 类型
- 一种type就像一张表,比如user表,order表
- 注意:
- ES 5.x版本中一个index可以有多个type
- ES 6.x版本中一个index只能有一种type
- ES 7.x版本后移除type这个概念
- 映射
- mapping定义了每个字段的类型等信息。相关于关系型数据库中的表结构
- 文档
- 一个document相关于关系型数据库中的一行记录
- 字段
- 相当于关系型数据库的字段
- 集群
- 集群由一个或多个节点组成,一个集群由一个默认名称“elasticsearch”
- 节点
- 集群的节点,一台机器或者一个进程
- 分片和副本
- 副本是分片的副本。分片有主分片(primary Shard) 和 副本分片(replica Shard)之分。
- 一个Index数据在物理上被分布在多个主分片中,每个主分片中存放部分数据。
- 每个主分片可以有多个副本,叫副本分片,是主分片的复制。
RESTful风格的介绍
es使用的是RESTful风格api来设计的,那么我们就来简单介绍一下。
- 介绍
- RESTful是一种架构的规范与约束、原则,符合这种规范的架构就是RESTful架构。
- 先看REST是什么意思:对资源的表述性状态转移,即通过HTTP动词来实现资源的状态扭转:
- 资源是REST系统的核心概念,所有的设计都是以资源为中心。
- 方法
action | 描述 |
HEAD | 只获取某个资源的头部信息 |
GET | 获取资源 |
POST | 创建或更新资源 |
PUT | 创建或更新资源 |
DELETE | 删除资源 |
GET /user :列出所有的用户
POST /user : 新建一个用户
PUT /user :更新某个指定的用户信息
DELETE /user/id : 删除指定用户
- curl 工具
- 获取es状态
curl -X GET "http://172.25.45.150:9200"
- 新增一个文档
curl -X PUT "http://172.25.45.150:9200/ccc/_doc/1" -H 'Content-Type: application/json' -d '
{
"user": "zhangsan",
"message" : "zhangsan is good"
}
'
- 删除一个文档
curl -X DELETE "http://172.25.45.150:9200/ccc/_doc/1"
#### 索引的介绍和使用
- 新增
- 新增一个 nba索引
curl -X PUT "http://172.25.45.150:9200/nba"
- 响应
{
"acknowledged":true,
"shards_acknowledged":true,
"index":"nba"
}
- 获取
- 请求
curl -X GET "http://172.25.45.150:9200/nba"
- 响应
{
"nba": {
"aliases": {}, //别名
"mappings": {}, //映射
"settings": { //索引设置
"index": {
"creation_date": "1645150581465", //创建时间
"number_of_shards": "1", //分片数量
"number_of_replicas": "1", //副本数量
http://172.25.45.150:9200"uuid": "-xxsKdJKT0yqitrwbYYE8g",
"version": {
"created": "7040299"
},
"provided_name": "nba"
}
}
}
}
- 删除
- 请求
curl -X DELETE "http://172.25.45.150:9200/nba"
- 响应
{
"acknowledged": true
}
- 获取所有索引
- 请求
curl -X GET "http://172.25.45.150:9200/_cat/indices?v"
- 响应
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
yellow open ccc wc54ITE7TJCdtOgzjaxmng 1 1 0 0 283b 283b
yellow open nba4 uGYfI4qZTYiP3E8jH-lz6A 1 1 0 0 230b 230b
yellow open nba3 iA2O1MhnSe6cBiYfu80w7Q 1 1 0 0 230b 230b
green open .kibana_task_manager_1 KuTEijTeRFOPy810QWLpog 1 0 2 0 30.5kb 30.5kb
green open .apm-agent-configuration sdrBOdnLRgahsZRNR8arSQ 1 0 0 0 283b 283b
green open .kibana_1 W6kh3-lCRr2zkMHj0Wxm1g 1 0 3 0 14.8kb 14.8kb
- 判断索引是否存在
- 请求
curl -X HEAD "http://172.25.45.150:9200/nba"
- 响应
{
"status" : 200
}
- 关闭索引
某个索引不想使用了。
- 请求
- 关闭 (关闭之后通过 – 获取-- 会在索引设置字段中多一个"verified_before_close": “true”,字段)
curl -X POST "http://172.25.45.150:9200/nba3/_close"
- 开启
curl -X POST "http://172.25.45.150:9200/nba3/_open"
- 响应
{
"acknowledged": true,
"shards_acknowledged": true,
"indices": {
"nba3": {
"closed": true
}
}
}