目录
1.数据格式
Elasticsearch 是面向文档型数据库,一条数据在这里就是一个文档。为了方便大家理解,
我们将 Elasticsearch 里存储文档数据和关系型数据库 MySQL 存储数据的概念进行一个类比
ES里的Index可以看做一个库而Types 相当于表,Documents 则相当于表的行,这里 Types 的概念已经被逐渐弱化,
Elasticsearch 6.X 中,一个 index 下已经只能包含一个type,Elasticsearch 7.X 中, Type 的概念已经被删除了
2.创建索引
对比关系型数据库,创建索引就等同于创建数据库,
在Postman中,向ES 服务器发 PUT 请求 :http://127.0.0.1:9200/shopping
请求后,服务器返回响应
{
"acknowledged": true, 【响应结果】# true 操作成功
"shards_acknowledged": true, 【分片结果】 # 分片操作成功
"index": "product" 【索引名称】
}
# 注意:创建索引库的分片数默认1片,在7.0.0之前的Elasticsearch版本中,默认 5 片
# 如果重复添加索引,会返回错误信息
3.查看单个索引
在Postman中向ES服务器发GET请求http://localhost:9200/shopping,
请求后,服务器响应结果如下
{
"product" 索引名: {
"aliases" 别名: {},
"mappings" 映射: {},
"settings" 设置: {
"index" 索引: {
"creation_date" 创建日期: "1622097375730",
"number_of_shards" 主分片数量: "1",
"number_of_replicas" 副分片数量: "1",
"uuid" 唯一标识: "26oaCnIcTzK2wvd29tADjg",
"version" 版本: {
"created": "7090399"
},
"provided_name" 名称: "product"
}
}
}
}
4.查看所有索引
在Postman中向ES服务器发GET http://127.0.0.1:9200/_cat/indices?v
这里请求路径中的cat表示查看的意思,indices表示索引所以整体含义就是查看当前ES服务器中的所有索引, 服务器响应结果如下
表头 | 说明 |
---|---|
health | 当前服务器健康状态: green(集群完整) yellow(单点正常、集群不完整) red(单点不正常) |
status | 索引打开、关闭状态 |
index | 索引名 |
uuid | 索引统一编号 |
pri | 主分片数量 |
rep | 副本数量 |
docs.count | 可用文档数量 |
docs.deleted | 文档删除状态(逻辑删除) |
store.size | 主分片和副分片整体占空间大小 |
pri.store.size | 主分片占空间大小 |
5.删除索引
1) 在Postman中向ES服务器发DELETE请求http://127.0.0.1:9200/shopping
重新访问索引时,服务器返回响应:索引不存在
2) 除了指定名称删除外,我们还可以通过索引别名或者通配符来删除, 注意:要谨慎使用 _all
或 *
去删除全部索引
6.关闭索引
在Postman中向ES服务器发POST请求http://127.0.0.1:9200/shopping/_close
7.打开索引
在Postman中向ES服务器发POST请求http://127.0.0.1:9200/shopping/_open
8.创建映射
有了索引库,等于有了数据库中的 database。接下来就需要建索引库(index)中的映射了,类似于数据库(database)中的表结构(table)。创建数据库表需要设置字段名称,类型,长度,约束等;索引库也一样,需要知道这个类型,下有哪些字段,每个字段有哪些约束信息,这就叫做映射(mapping)
向ES服务器发PUT请求http://localhost:9200/shopping/_mapping
{
"properties": {
"ProductName":{
"type": "text",
"index": true
},
"Spec":{
"type": "text",
"index": false
},
"Price":{
"type":"double",
"index": false
}
}
}
类型 | 数据说明 |
---|---|
type | 类型,Elasticsearch 中支持的数据类型非常丰富 1.String 类型, text:可分词 keyword:不可分词,数据会作为完整字段进行匹配 2.Numerical:数值类型,分两类 基本数据类型:long、integer、short、byte、double、float、half_float 浮点数的高精度类型:scaled_float 3.Date日期类型 4.Array数组类型 5.Object对象 |
index | 是否索引,默认为 true,也就是说你不进行任何配置,所有字段都会被索引 |
store | 是否将数据进行独立存储,默认为 false 原始的文本会存储在_source 里面,默认情况下其他提取出来的字段都不是独立存储 的,是从_source 里面提取出来的。当然你也可以独立的存储某个字段,只要设置 "store": true 即可,获取独立存储的字段要比从_source 中解析快得多,但是也会占用 更多的空间,所以要根据实际业务需求来设置 |
fielddata | 文本(text)字段使用查询时内存中的数据结构,true才可以排序 |
analyzer | 分词器这里的ik_max_word即使用ik 分词器 |
9.修改副本数
PUT http://localhost:9200/product/_settings
{
"number_of_replicas": "0"
}