0
点赞
收藏
分享

微信扫一扫

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


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

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

一. 索引操作

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

一.一 创建索引

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

http://localhost:9200/shopping

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

响应字段

信息

acknowledged

响应结果, true 为成功

shards_acknowledged

分片结果, true 为分片成功, 默认是1片

index

索引名称

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

ES的索引文档映射操作(二)_唯一标识_02

一.二 查看所有的索引

_cat/indices?v indices 是 index 的复数

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

ES的索引文档映射操作(二)_字段_03

表头

含义

health

当前服务器健康状态:

green(集群完整) yellow(单点正常、集群不完整) red(单点不正常)

status

索引打开、关闭状态

index

索引名

uuid

索引统一编号

pri

主分片数量

rep

副本数量

docs.count

可用文档数量

docs.deleted

文档删除状态(逻辑删除)

store.size

主分片和副分片整体占空间大小

pri.store.size

主分片占空间大小

一.三 查看单个索引

使用 Get 请求

http://localhost:9200/shopping

ES的索引文档映射操作(二)_主键_04

响应字段

信息

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的索引文档映射操作(二)_elasticsearch_05

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

ES的索引文档映射操作(二)_字段_06

再次查询时:

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

二. 文档操作

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

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

二.一 创建文档

二.一.一 不指定id

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

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

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

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

ES的索引文档映射操作(二)_字段_08

响应字段

信息

_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的索引文档映射操作(二)_字段_09

_id 变成了指定的id, 为1

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

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

ES的索引文档映射操作(二)_主键_10

二.二 查看单个文档

使用 Get 请求

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

ES的索引文档映射操作(二)_主键_11

响应字段

信息

_index

索引名称

_type

类型_文档

_id

记录的唯一标识id, 相当于主键

_version

版本, 会依次递增

_seq_no

序列号

_primary_term

主键术语

found

查询结果, true 表示查询到, false 表示未查询到

_source

文档源信息, 以 json 形式展示

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

ES的索引文档映射操作(二)_主键_12

二.三 全部查询

后面跟 _search

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

查询参数:

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

ES的索引文档映射操作(二)_主键_13

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

二.四 修改文档

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

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

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

如, 将价格修改成 5000

ES的索引文档映射操作(二)_主键_14

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

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

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

修改成功后,进行查看:

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

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

二.四.二 更新部分字段

/索引/类型/id/_update

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

目前的 1 的文档内容是:

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

只修改 price 价格为 5000

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

只传入 price 价格, 修改

ES的索引文档映射操作(二)_字段_17

查看, images, category 保持不变.

ES的索引文档映射操作(二)_主键_18

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

ES的索引文档映射操作(二)_主键_19

二.五 删除文档

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

如 删除文档 2

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

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

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

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

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

ES的索引文档映射操作(二)_主键_22

二.六 条件删除文档

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

使用 _delete_by_query , 通过 查询删除

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

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

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

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

请求体:

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

进行操作:

ES的索引文档映射操作(二)_主键_24

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

ES的索引文档映射操作(二)_主键_25

三. 映射

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

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

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

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

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

三.一 创建映射关系

创建映射关系:

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的索引文档映射操作(二)_唯一标识_27

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

ES的索引文档映射操作(二)_字段_28

三.二 索引映射属性

三.二.一 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的索引文档映射操作(二)_elasticsearch_29

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


举报

相关推荐

es文档操作

ES索引库操作

0 条评论