Elasticsearch 索引基础
Elasticseach 索引基础
安装 分布式的 Elasticsearch ,启动一个master 和两个 slave 进行操作,以及 启动 Kibana。
一、创建索引
1.1、ElasticSearch Head 插件创建
-
进入ElasticSearch Head 插件,点击索引分页选项卡
-
点击新建索引,输入索引名称(索引名称不可重复)和选择分片与副本数
-
创建完成,如下:
补充:
-
创建完索引之后,在ElasticSearch Head插件中可以看到如下图。
-
其中 加粗框的表示主分片,细框的表示副本。所以 0、1、2、3、4表示索引(index)的分片,而左边的Kibana_1索引就只有一个主分片和一个副本。
-
点击 框,可以看到如下图,根据其中的primary属性查看是否为主分片。
-
主分片
-
副本
-
1.2、请求方式创建索引
1.2.1、Postman 请求方式创建索引
PUT方式 发送 http://localhost:9200/test
创建成功:
1.2.1、Kibana 请求方式创建索引
启动Kibana后,浏览器输入localhost:5601
,进入Dev Tools
输入命令 【 PUT 索引名 】,点击命令后面的执行图标,即可。如下:
PUT test # 默认分片数和副本数
PUT test # 设置分片数和副本数
{
"settings": {
"number_of_shards": 3,
"number_of_replicas": 2
}
}
创建成功:
但是请求方式创建的索引,Elasticsearch 默认为分片数和副本数都为1
补充:
-
索引名不能重复,唯一的。重复创建索引错误:
-
索引名称不能有大写字母。创建含有大写字母索引错误:
-
创建索引时,需要注意分片数的分配,分片数创建完后便不可在修改,建议使用带有分片数和副本数配置的方式创建索引(副本可修改)
二、更新索引
在通过请求方式创建完索引之后,我们发现索引的分片数和副本数都为1,一般情况下,不能满足我们的需求。那么我们该怎么修改索引的分片数和副本数属性呢?
PUT 索引名称/_settings
{
"number_of_replicas": number
}
如:
PUT test/_settings
{
"number_of_replicas": 2
}
修改成功:
这时就有人问,那么分片呢?还记得我们讲解ElasticSearch 的架构设计与说明中说的,分片与路由吗?它是通过一个hash来路由分片存储,所以修改分片后就导致路由乱套,就导致分片找不到。
但是我们可以在创建索引之前,修改默认的分片数。Elasticsearch 默认分片数量为100。可使用如下请求方式修改为10000
PUT /_cluster/settings
{
"persistent":{
"cluster":{
"max_shards_per_node":10000
}
}
}
三、修改索引读写权限
3.1、添加文档
PUT 索引名/_doc/编号
{
"titile":"我和我的爱人"
}
如:
PUT index/_doc/001
{
"titile":"我和我的爱人"
}
添加成功:
默认设置中,索引具备读写权限,但读写权限可关闭:
关闭索引读权限:
PUT 索引名称/_settings
{
"blocks.read":true
}
如:
PUT index/_settings
{
"blocks.read":true
}
关闭索引写权限:
PUT 索引名称/_settings
{
"blocks.write":true
}
如:
PUT index/_settings
{
"blocks.write":true
}
写入数据,被阻挡:
补充:
-
blocks.write:设置索引写的权限
-
blocks.read:设置索引读的权限
-
blocks.read_only:设置索引只可读的权限
四、查看索引
4.1、ElasticSearch Head 插件查看
4.2、请求方式查看
GET 索引名称/_settings
如:
GET index/_settings
查看多个索引信息:
GET 索引名称1,索引名称2,.,.,./_settings
如:
GET index,test/_settings
查看所有索引信息:
GET _all/_settings
五、删除索引
5.1、ElasticSearch Head 插件删除索引
5.2、请求方式删除索引
DELETE 索引名称
如:
DELETE test
六、索引Open/Close
6.1、关闭索引
POST 索引名称/_close
如:
POST index/_close
6.2、打开索引
POST 索引名称/_open
如:
POST index/_open
补充:
- 关闭多个/打开多个索引,使用“,”隔开即可,如查看多个索引的方式
- 关闭所有索引/打开所有索引,使用 _all 即可
七、复制索引
POST _reindex
{
"source": {"index","被复制索引名称"},
"dest": {"index":"复制成的索引名称"}
}
如:
POST _reindex
{
"source": {"index":"index"},
"dest": {"index":"index_copy"}
}
从上图我们看出,复制的索引与被复制索引分片数与副本数不一样。其实复制索引就是复制索引的数据:
八、索引别名
8.1、ElasticSearch Head 插件修改索引别名
删除索引别名:
8.2、请求方式操作索引别名
POST /_aliases
{
"actions": [
{
"add": {
"index": "索引名称",
"alias": "索引别名"
}
}
]
}
如:
POST /_aliases
{
"actions": [
{
"add": {
"index": "index_copy",
"alias": "index_copy_aliases"
}
}
]
}
删除索引别名:(修改 请求中的add改为remove即可)
POST /_aliases
{
"actions": [
{
"remove": {
"index": "索引名称",
"alias": "索引别名(起好的别名)"
}
}
]
}
如:
POST /_aliases
{
"actions": [
{
"remove": {
"index": "index_copy",
"alias": "index_copy_aliases"
}
}
]
}
8.3、查看索引别名
GET /索引名称/_alias
如:
GET /index_copy_aliases/_alias
查看别名对应的索引:
GET /索引名称/_alias
如:
GET /index_copy/_alias
查看集群上所有可用别名:
GET /_alias