赞
踩
使用 put 创建索引时必须指明文档id,否则报错
# PUT 创建命令
# test1 索引名称
# type1 类型名称,默认为_doc,已经被废弃
# 1 文档id
PUT /test1/type1/1
{
"name":"zhangsan",
"age":18,
"birth":"2000-01-20"
}
结果:
#! Deprecation: [types removal] Specifying types in document index requests is deprecated, use the typeless endpoints instead (/{index}/_doc/{id}, /{index}/_doc, or /{index}/_create/{id}).
{
"_index" : "test1", // 索引
"_type" : "type1", // 类型
"_id" : "1", // id
"_version" : 1, // 版本
"result" : "created", // 操作类型
"_shards" : { // 分片信息
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 0,
"_primary_term" : 1
}
post 如果没有指明文档id,会随机生成一个
POST /test2/type2
{
"name":"zhangsan",
"age":18,
"birth":"2000-01-20"
}
结果:
#! Deprecation: [types removal] Specifying types in document index requests is deprecated, use the typeless endpoints instead (/{index}/_doc/{id}, /{index}/_doc, or /{index}/_create/{id}).
{
"_index" : "test2",
"_type" : "type2",
"_id" : "3D_WQY4BOf0ywiICmI8O",
"_version" : 1,
"result" : "created",
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 0,
"_primary_term" : 1
}
对比 mysql :
PUT test1/type1/1 : 索引test1相当于关系型数据库的库,类型type1就相当于表 ,1 代表数据中的主键 id
这里需要补充的是 ,在 es5 版本前,一个索引下可以创建多个类型,但是在之后,一个索引只能对应一个类型,默认为 _doc,而 id 相当于关系型数据库的主键id若果不指定就会默认生成一个20位的uuid,属性相当关系型数据库的column(列)。
而结果中的 result 则是操作类型,现在是 created ,表示第一次创建。如果再次点击执行该命令那么 result 则会是 updated ,我们细心则会发现 _version 开始是1,现在你每点击一次就会增加一次。表示第几次更改。
# get 索引名称
GET test1
{ "test1" : { "aliases" : { }, "mappings" : { "properties" : { "age" : { "type" : "long" }, "birth" : { "type" : "date" }, "name" : { "type" : "text", "fields" : { "keyword" : { "type" : "keyword", "ignore_above" : 256 } } } } }, "settings" : { "index" : { "creation_date" : "1710501416895", "number_of_shards" : "1", "number_of_replicas" : "1", "uuid" : "hemDp4F3T5ePsAZmaO5Ijg", "version" : { "created" : "7080099" }, "provided_name" : "test1" } } } }
可以看到 name、age、birth 字段指定了类型 text、long、date ,说明 es 会根据字段的值指定默认的类型
如果想要自己指定字段的类型,使用映射
PUT /test3 { "mappings": { "properties": { "name":{ "type": "text" }, "age":{ "type": "long" }, "birth":{ "type": "date" } } } }
结果:
{
"acknowledged" : true,
"shards_acknowledged" : true,
"index" : "test3"
}
映射数据是字段名:json 数据,上面只指定了type
(数据类型),其实可以指定很多属性
# get /索引名称/_mapping
GET /test3/_mapping
结果:
{ "test3" : { "mappings" : { "properties" : { "age" : { "type" : "long" }, "birth" : { "type" : "date" }, "name" : { "type" : "text" } } } } }
GET _cat/indices?v
可以查看我们所有索引的状态健康情况,分片,数据储存大小等等。
# delete 索引名称
DELETE test3
结果:
{
"acknowledged" : true
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。