Elasticsearch笔记-索引(index)
索引
查看全部索引
GET _cat/indices?v&pretty
health:当前服务器健康状态: green(集群完整) yellow(单点正常、集群不完整) red(单点不正常)
status:索引打开、关闭状态
index:索引名
uuid:索引统一编号
pri:主分片数量
rep:副本数量
docs.count:可用文档数量
docs.deleted:文档删除状态(逻辑删除)
store.size:主分片和副分片整体占空间大小
pri.store.size:主分片占空间大小
查看索引信息
GET index1
{
"index1": {//索引名
"aliases": {},//别名
"mappings": {},//映射
"settings": {//设置
"index": {//设置 - 索引
"creation_date": "1617861426847",//设置 - 索引 - 创建时间
"number_of_shards": "1",//设置 - 索引 - 主分片数量
"number_of_replicas": "1",//设置 - 索引 - 主分片数量
"uuid": "J0WlEhh4R7aDrfIc3AkwWQ",//设置 - 索引 - 主分片数量
"version": {//设置 - 索引 - 主分片数量
"created": "7080099"
}
}
}
}
}
查看集群状态
GET _cat/health?v
查看集群节点
GET /_cat/nodes
查看索引配置信息
GET index1/_settings
查看索引映射信息
GET index1/_mapping
创建索引
PUT index9
{
"settings": {
"number_of_shards": 1,
"number_of_replicas": 0
},
"mappings": {
"properties": {
"id":{
"type":"long"
},
"description":{
"type":"text"
},
"name":{
"properties": {
"firstname":{"type":"keyword"},
"lastname":{"type":"keyword"}
}
}
}
}
}
number_of_shards:主分片数
number_of_replicas:副本数
关闭索引
如果索引被关闭,那么关于这个索引的所有读写操作都会被阻断
POST index1/_close
打开索引
POST index1/_open
冻结索引
冻结索引和关闭索引类似,关闭索引是既不能读,也不能写。而冻结索引是可以读,但是不能写
POST index1/_freeze
解冻索引
POST index1/_unfreeze
删除索引:
DELETE index1
在多个索引库中执行操作
GET index1,index2,index3/_search
GET index1,index2,index3/_mapping
GET /_all/_settings
GET /log_2013_*/_settings
GET /log_2013_-*/_settings/index.number_*
_all代表全部
重建索引
索引添加后只可以添加新字段,不允许修改以后字段,如果需要修改,可以创建一个新索引,将数据拷贝到新索引
1、创建新索引bookdb_index2
PUT bookdb_index2
{...}
2、拷贝数据
POST _reindex
{
"source": {
"index": "bookdb_index"
},
"dest": {
"index": "bookdb_index2"
}
}
索引别名
索引别名就像一个快捷方式或软连接,可以指向一个或多个索引,也可以给任何一个需要索引名的API来使用。_alias用于单个操作,_aliases用于执行多个原子级操作,有了它你的应用可以在零停机的情况下从旧索引迁移到新索引了
PUT /my_index_v1 //创建索引my_index_v1
PUT /my_index_v1/_alias/my_index //设置别名my_index指向my_index_v1
GET /_alias/my_index //检测这个别名指向哪一个索引
GET /my_index_v1/_alias/ //哪些别名指向这个索引
POST /_aliases
{ "actions": [
{ "remove": { "index": "my_index_v1", "alias": "my_index" }},
{ "add": { "index": "my_index_v2", "alias": "my_index" }}
]
}
refresh
在 Elasticsearch 中,写入和打开一个新段的轻量的过程叫做refresh。默认情况下每个分片会每秒自动刷新一次。这就是为什么我们说 Elasticsearch是近实时搜索:文档的变化并不是立即对搜索可见,但会在一秒之内变为可见。
并不是所有的情况都需要每秒刷新。可能你正在使用Elasticsearch索引大量的日志文件,你可能想优化索引速度而不是近实时搜索,可以通过设置refresh_interval ,降低每个索引的刷新频率
POST /student/_refresh
refresh间隔时间设置
PUT /student
{
"settings": {
"refresh_interval": "30s"
}
}
refresh_interval可以在既存索引上进行动态更新。在生产环境中,当你正在建立一个大的新索引时,可以先关闭自动刷新,待开始使用该索引时,再把它们调回来。
# 关闭自动刷新
PUT /users/_settings
{ "refresh_interval": -1 }
# 每一秒刷新
PUT /users/_settings
{ "refresh_interval": "1s" }
flush
手动flush如下所示,但是并不建议使用。但是当要重启或关闭一个索引,flush该索引是很有用的。
POST /index6/_flush