索引-创建
对比关系型数据库,创建索引就等同于创建数据库
在当前ES 7.8版本中,创建索引默认分片是1个,每个分片的副本默认是1个
# 使用PUT请求创建
在 Postman 中,向 ES 服务器发 PUT 请求 :http://127.0.0.1:9200/shopping
PUT http://localhost:9200/shopping
1
示例图
为什么使用PUT请求创建,而不是POST请求?
由于PUT请求具有幂等性,因此在创建一次,下一次再PUT提交时,不会对当前创建的结果有任何影响,如再次PUT创建时,返回错误信息如下
{
"error": {
"root_cause": [
{
"type": "resource_already_exists_exception",
"reason": "index [shopping/nBExHlw1S16Y5v5Ix6QPfw] already exists",
"index_uuid": "nBExHlw1S16Y5v5Ix6QPfw",
"index": "shopping"
}
],
"type": "resource_already_exists_exception",
"reason": "index [shopping/nBExHlw1S16Y5v5Ix6QPfw] already exists",
"index_uuid": "nBExHlw1S16Y5v5Ix6QPfw",
"index": "shopping"
},
"status": 400
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
而POST请求不具有幂等性,每次POST都会有新增的记录;由于索引的特殊性,创建一次后不能创建相同的名称的索引,因此不能使用POST
# 返回数据解析
{
"acknowledged"【响应结果】: true, # true 操作成功
"shards_acknowledged"【分片结果】: true, # 分片操作成功
"index"【索引名称】: "shopping"
}
1
2
3
4
5
2
3
4
5
# 后台返回日志
[2022-01-23T19:46:00,909][INFO ][o.e.c.m.MetadataCreateIndexService] [LAPTOP-HB9K8SMO] [shopping] creating index, cause [api], templates [], shards [1]/[1], mappings []
1
注意:创建索引库的分片数默认 1 片,在 7.0.0 之前的 Elasticsearch 版本中,默认 5 片
Last Updated: 2022/02/05, 15:58:51