索引的概念
索引是一个虚拟的空间,类似于关系型数据库的table
一个索引至少由一个分片组成,索引可以包含一个主分片和多个副本分片
索引命名(建议)
业务类型命名:名称+数字版本号
日志类型命名:名称+时间
索引的创建:
- 1、动态创建
索引无需提前创建,第一条数据插入即可创建完成
使用场景:非严格数据模型限制规范的场景,如日志、监控
DELETE example_001
GET example_001
PUT /example_001/_doc/1
{
"name":"wangzx",
"createDate":"2021-10-05"
}
GET example_001结果:
{
"example_001" : {
"aliases" : { },
"mappings" : {
"properties" : {
"createDate" : {
"type" : "date"
},
"name" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
}
}
},
"settings" : {
"index" : {
"creation_date" : "1633443774651",
"number_of_shards" : "1",
"number_of_replicas" : "1",
"uuid" : "1LrIo5mKTXm1oOvtHnQUsQ",
"version" : {
"created" : "7040299"
},
"provided_name" : "example_001"
}
}
}
}
- 2、静态创建
提前创建号索引,提前做好索引数据分布与响应设置
应用场景:业务系统数据需要严格规范,或极端情况下,避免集中创建索引时,集群响应时间慢
创建一个空的索引(没有字段的“表”)
PUT /example-002
{
"settings": {
"number_of_shards": 1,
"number_of_replicas": 1
}
}
创建索引时指定一个索引别名可以通过别名来访问索引元数据信息(索引和别名是多对多关系,一个别名可以用在多个索引上,一个索引也可以有多个别名)
PUT /example-003
{
"aliases": {
"example003-aliases": {}
}
}
GET /example-003
GET /example003-aliases //和上面效果相同
3、滚动创建
image.png
image.png
如何滚动创建索引(先静态创建带别名的索引,然后post _rollover api)
PUT /example-005-rollover-index-000001
{
"aliases": {
"example-005-rollover": {}
}
}
POST /example-005-rollover/_rollover
结果:
{
"acknowledged" : true,
"shards_acknowledged" : true,
"old_index" : "example-005-rollover-index-000001",
"new_index" : "example-005-rollover-index-000002",
"rolled_over" : true,
"dry_run" : false,
"conditions" : { }
}
索引的属性设置:
- 静态设置
先创建空索引然后设置属性
索引分片:默认1,创建索引时需要指定,之后索引活动期间不可变,后期只能重建
索引字段类型:字段类型不可变,一旦指定几乎不可变,若要修改,则需要刷新所有历史数据,等同于索引重建
索引文档数据模型(表结构)
es数据模型与传统关系型数据库类比.png文档模型:Json类型
元数据:_index、_type、_id、_version、 _seqno _primary_term、 其他
网友评论