ElasticSearch7.10索引
ElasticSearch7.10的索引-04
Elastic的索引想当于关系型数据库的数据库,索引(index)的复数为indices
或indexes
。
- 用作动词-索引一个文档到一个索引(名词)中以便被检索和查询。
- 倒排索引;关系型数据库通过增加一个索引比如一个B树(B-tree)索引到指定的列上,以便提升数据检索速度。Elastic和Lucene使用了一个叫做
倒排索引
的结构来达到相同的目的。 - 默认的,一个文档中每一个属性都是被索引的(有一个倒排索引)和可搜索的。一个没有倒排索引的属性是不能被搜索到的。
今天继续操作ES,先建立索引,分片5,副本1,名称test
0,1,2,3,4分布表示索引的分片,加粗部分是主分片,没有加粗部分是副本,在head插件点击,弹出的信息有primary为ture,
则是主分片。
索引
1. 创建索引
- 通过postman请求,方式POST,请求地址
localhost:9200/book
- kibana发送请求,右侧有提示
PUT book
- 通过命令行
我们先只简单创建一个索引,后续步骤继续。
curl -XPUT '192.168.246.130:9200/book
- 查询索引
GET book/_settings
GET book,book1/_settings
GET _all/_settings
2. 更新索引
对于索引的属性,可以修改,如索引的副本数,分片数
这里我遇到了一个错误Can't update non dynamic settings [[index.number_of_shards]] for open indices
。意思是分片数量在索引打开时不能更新
PUT book/_settings
{
"number_of_replicas":2
}
# 打开索引
PUT book/_open
#关闭索引
PUT /book/_close
# 分片
PUT book/_settings
{
"number_of_shards":5
}
更改分片,结果报错final book setting [index.number_of_shards], not updateable
,这个book索引的主分片是无法修改的,主分片
数一旦建立就无法修改。
- 修改索引的读写权限
PUT book/_settings
{
"blocks.write": true
}
者个操作执行后就无法添加文档了。若想再次打开,可以这样写
PUT book/_settings
{
"blocks.write": false
}
对于索引,还有很多权限,如:
- blocks.write
- blocks.read
- blocks.read_only
3. 删除索引
- 删除单个索引
DELETE /book
删除索引需要指定索引名称、别名或者通配符。
- 删除多个索引
DELETE book,book1,book2
DELETE book*
- 删除全部索引
DELETE _all
DELETE *
这个all和通配符可以删除全部索引,为了防止这种高危操作,在config/elasticsearch.yml中,禁用这个操作
action.destructive_requires_name=true
4. 复制索引
索引的复制,不会复制配置,只会复制数据,当然,可以增加查询条件。
POST _reindex
{
"source":{"index":"book"},
"dest":{"index":"book1"}
}
5. 索引编辑别名
索引可以增加别名,别名唯一,则可以代替索引名称。
POST /_aliases
{
"actions": [
{
"add": {
"index": "book",
"alias": "book_alias"
}
}
]
}
5.1删除别名
对actions中的add更改为remove即可删除别名
POST /_aliases
{
"actions": [
{
"remove": {
"index": "book",
"alias": "book_alias"
}
}
]
}
5.2查看别名
- 查看一个
GET book/_alias
- 用别名的索引查看别名
GET /book_alias/_alias
- 查询集群所有别名
GET /_alias
弯弯月亮,只为美好的自己。