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
        }
    }
}