> 文章列表 > ES的索引文档映射操作(二)

ES的索引文档映射操作(二)

ES的索引文档映射操作(二)

我于黑夜中相信自己,相信自己一定能一往无前,即使我没有钱.

上一章简单介绍了 ES的安装和常用概念(一),如果没有看过,请观看上一章

一. 索引操作

索引可以创建, 查看, 和删除操作.

一.一 创建索引

PUT 请求, 后跟索引的名称。 如, 创建 一个 shopping 商店 的索引

 http://localhost:9200/shopping

ES的索引文档映射操作(二)

响应字段 信息
acknowledged 响应结果, true 为成功
shards_acknowledged 分片结果, true 为分片成功, 默认是1片
index 索引名称

如果 索引已经存在,重复添加的话,会报错 resource_already_exists_exception

ES的索引文档映射操作(二)

一.二 查看所有的索引

_cat/indices?v indices 是 index 的复数

http://localhost:9200/_cat/indices?v

ES的索引文档映射操作(二)

表头 含义
health 当前服务器健康状态:
green(集群完整) yellow(单点正常、集群不完整) red(单点不正常)
status 索引打开、关闭状态
index 索引名
uuid 索引统一编号
pri 主分片数量
rep 副本数量
docs.count 可用文档数量
docs.deleted 文档删除状态(逻辑删除)
store.size 主分片和副分片整体占空间大小
pri.store.size 主分片占空间大小

一.三 查看单个索引

使用 Get 请求

http://localhost:9200/shopping

ES的索引文档映射操作(二)

响应字段 信息
shopping 索引名称
aliases 别名
mappings 映射信息
settings 设置
settings.index 设置—> 索引
settings.index.creation_date 创建时间,为时间戳
settings.index.number_of_shards 主分片数量, 默认为1
settings.index.number_of_replicas 副分片数量, 默认为1
settings.index.uuid 唯一标识
settings.index.version 版本
settings.index.provided_name 索引名称

一.四 删除索引

使用 Delete 请求

http://localhost:9200/shopping

ES的索引文档映射操作(二)

删除一个不存在的索引时, 会抛出异常 index_not_found_exception

ES的索引文档映射操作(二)

再次查询时:

ES的索引文档映射操作(二)

二. 文档操作

文档要在索引里面, 在创建文档时,要指定索引。

再次点击 创建 shopping 索引的操作, 先创建一下索引.

二.一 创建文档

二.一.一 不指定id

往里面插入一个 手机的记录信息

先 /索引名/类型名, 表名默认是 _doc , 最好是指定具体的类型名 (表名) , phone

POST    http://localhost:9200/shopping/phone
{"title":"小米手机","category":"小米", "images":"www.yueshushu.top", "price":2000.00
}

ES的索引文档映射操作(二)

响应字段 信息
_index 索引名称
_type 类型_文档
_id 记录的唯一标识id, 相当于主键
_version 版本, 会依次递增
result 结果, created 为创建成功 , updated 为更新成功 ,deleted 为删除成功
_shards 分片信息
_shards.total 分片–总数
_shards.successfu 分片成功数
_shards.failed 分片失败数
_seq_no 序列号
_primary_term 主键术语

二.一.二 创建文档时,指定id

后面跟着 id 的数字, 如指定 id 为 1

POST    http://localhost:9200/shopping/phone/1

ES的索引文档映射操作(二)

_id 变成了指定的id, 为1

如果增加文档时,明确了数据主键, 那么请求方式也可以为 PUT

PUT  http://localhost:9200/shopping/phone/2

ES的索引文档映射操作(二)

二.二 查看单个文档

使用 Get 请求

GET   http://localhost:9200/shopping/phone/1

ES的索引文档映射操作(二)

响应字段 信息
_index 索引名称
_type 类型_文档
_id 记录的唯一标识id, 相当于主键
_version 版本, 会依次递增
_seq_no 序列号
_primary_term 主键术语
found 查询结果, true 表示查询到, false 表示未查询到
_source 文档源信息, 以 json 形式展示

如果查询不到, 如 查询 _id = 100

ES的索引文档映射操作(二)

二.三 全部查询

后面跟 _search

GET    http://localhost:9200/shopping/_search

查询参数:

{"query":{"match_all":{}}
}

ES的索引文档映射操作(二)

关于 查询, 后面老蝴蝶会在下一章节详细讲解

二.四 修改文档

二.四.一 更新文档全部字段

使用 POST 请求 , 修改时要 指定 id

POST     http://localhost:9200/shopping/phone/2

如, 将价格修改成 5000

ES的索引文档映射操作(二)

查询时, 价格就变成了 5000 result 为 updated

如果 更新时,未传入 images 和 category 字段呢?

ES的索引文档映射操作(二)

修改成功后,进行查看:

ES的索引文档映射操作(二)

发现,文档里面已经没有 images 和 category 字段了.

二.四.二 更新部分字段

/索引/类型/id/_update

url 请求后面 追加 _update , 请求体内容也变一下

目前的 1 的文档内容是:

{"title": "小米手机","category": "小米","images": "www.yueshushu.top","price": 3000.00}

只修改 price 价格为 5000

{"doc":{"price":5000.00}
}

只传入 price 价格, 修改

ES的索引文档映射操作(二)

查看, images, category 保持不变.

ES的索引文档映射操作(二)

如果更新的内容与之前的内容一样,则不会进行更新操作。

ES的索引文档映射操作(二)

二.五 删除文档

删除一个文档不会立即从磁盘上移除,它只是被标记成已删除(逻辑删除)

如 删除文档 2

DELETE   http://localhost:9200/shopping/phone/2

ES的索引文档映射操作(二)

进行查看, 发现 查询不出数据了. result 为 : deleted

ES的索引文档映射操作(二)

如果试图删除一个不存在的文档, 会 not_found

ES的索引文档映射操作(二)

二.六 条件删除文档

一般删除数据都是根据文档的唯一性标识进行删除,实际操作时,也可以根据条件对多条数 据进行删除

使用 _delete_by_query , 通过 查询删除

全部查询, 目前的文档信息是:

ES的索引文档映射操作(二)

两个价格都是 2000 , 根据价格进行删除

DELETE  http://localhost:9200/shopping/phone/_delete_by_query

请求体:

{"query":{ "match":{"price":"2000"}}
}

进行操作:

ES的索引文档映射操作(二)

再次查看, 会发现, 文档都已经被删除了.

ES的索引文档映射操作(二)

三. 映射

有了索引库,等于有了数据库中的 database。

接下来就需要建索引库(index)中的映射了,类似于数据库(database)中的表结构(table)。创建数据库表需要设置字段名称,类型,长度,约束等;

索引库也一样,需要知道这个类型 下有哪些字段,每个字段有哪些约束信息,这就叫做映射(mapping)。

shopping 索引不要进行处理, 我们创建一个 student 的索引库

ES的索引文档映射操作(二)

三.一 创建映射关系

创建映射关系:

PUT    http://localhost:9200/student/_mapping
{"properties":{"name":{"type":"text",   "index":true},"sex":{"type":"text","index":true},"age":{"type":"long","index":true}}
}

其中, name, sex, age 为字段名,

type 为类型, index 为是否添加为索引, store 是否独立存储, analyzer 为分词器

ES的索引文档映射操作(二)

再查看索引时, 就会展示出映射关系

ES的索引文档映射操作(二)

三.二 索引映射属性

三.二.一 type 类型

描述 取值类型
字符串 类型 String 分两种, text , 可以进行分词, keyword 不可分词,会做为完整字段进行匹配
数值类型 Numerical 基本类型, 常用的有 long, integer, short, double, float . 浮点数高精度: scaled_float
日期类型 Date Date
数组类型 Array 数组类型
对象 Object Object

三.二.二 index 索引

默认为 true, 也就是不进行任何配置, 所有字段都会被索引

true:字段会被索引,则可以用来进行搜索

false:字段不会被索引,不能用来搜索

三.二.三 store 是否独立存储

是否将数据进行独立存储,默认为 false

原始的文本会存储在_source 里面,默认情况下其他提取出来的字段都不是独立存储 的,是从_source 里面提取出来的。

当然你也可以独立的存储某个字段,只要设置 “store”: true 即可,获取独立存储的字段要比从_source 中解析快得多,

但是也会占用 更多的空间,所以要根据实际业务需求来设置。

三.二.四 analyzer 分词器

会使用到 ik 分词器

三.三 查看映射

Get 请求

Get   http://localhost:9200/student/_mapping

ES的索引文档映射操作(二)

谢谢您的观看,如果喜欢,请关注我,再次感谢 !!!

成语解释