3个你需要知道的Elasticsearch技巧

elastic logo

最近在做Elasticsearch开发维护工作,所以今天分享三个Elasticsearch的简单技巧。没有什么高大上,就是简单工作总结。

一、使用alias(别名)管理索引

首先我们要说的是索引alias
alias就是一个快捷方式或者说软链接,可以指向1个或者多个索引,通过alias我们可以实现更好的实现索引的管理, 比如查找搜索,分类数据,切换索引等。

  1. 创建,删除别名
1
2
3
4
5
6
7
8
9
10
11
curl -XPOST 'localhost:9200/_aliases' -d
{
"actions": [
{"remove": {"index": "day1", "alias": "week2"}},
{"add": {"index": "day1", "alias": "week1"}},
{"add": {"index": "day2", "alias": "week1"}}
]
}
在这里add,remove方法也可以分开单独写。

通过上面添加alias,我们就可以用week1获取操作几天的索引数据了。

1
2
之前: curl localhost:9200/day1,day2/_search
现在: curl localhost:9200/week1/_search

二、使用cat API查看集群信息

之前我们需要查看集群信息都是通过集群API获取,但是返回数据为JSON格式,不利于理解,而且也不便于记忆。为快速方便看集群的各种监控或者配置情况,我们可以通过使用一个友好API, cat API

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
curl localhost:9200/_cat
=^.^=
/_cat/allocation # 返回分片分配和磁盘使用的信息
/_cat/shards # 返回关于分片的信息
/_cat/shards/{index}
/_cat/master # 返回当选主节点信息
/_cat/nodes # 返回集群拓扑相关信息
/_cat/tasks
/_cat/indices # 返回所有索引信息
/_cat/indices/{index}
/_cat/segments # 索引段包括分片布局的API信息
/_cat/segments/{index}
/_cat/count # 为所有索引返回文档个数的信息
/_cat/count/{index}
/_cat/recovery # 返回还原过程的视图
/_cat/recovery/{index}
/_cat/health # 集群健康度
/_cat/pending_tasks # 正在等待执行任务信息
/_cat/aliases # 返回有关别名信息
/_cat/aliases/{alias}
/_cat/thread_pool #集群范围内的线程池统计信息
/_cat/thread_pool/{thread_pools}
/_cat/plugins # 插件信息
/_cat/fielddata # 字段数据信息使用堆内存
/_cat/fielddata/{fields}
/_cat/nodeattrs # 输出显示自定义节点属性
/_cat/repositories # 输出集群中注册快照存储库
/_cat/snapshots/{repository} # 输出属于指定仓库的快照信息
/_cat/templates # 输出当前正在存在的模板信息

可以通过 curl localhost:9200/_cat/health?v 查看集群健康度,通过v可以看到具体字段及对应的信息。

三、维护节点推迟再平衡

在服务版本升级或者需要进行一些维护操作,我们通常会重启服务,但是我当我们关闭一个节点的时候,集群会发现节点丢失会进行再平衡,如果集群维护时间短(集群数据量大),这样会造成数据分片再平衡花费较长时间。

通过下面方式关闭分片分配:

1
2
3
4
5
6
PUT /_cluster/settings
{
"transient" : {
"cluster.routing.allocation.enable" : "none"
}
}

然后关闭单个节点,维护升级,重启,最后进行如下设置:

1
2
3
4
5
6
PUT /_cluster/settings
{
"transient" : {
"cluster.routing.allocation.enable" : "all"
}
}

通过上面的三个简单方法,希望大家在使用ES将更加得心应手。

本文首发微信公众号:当程序员以后
如有问题或建议,请公众号留言

sitin wechat
扫一扫上面的二维码,订阅我的博客!