最近在做Elasticsearch开发维护工作,所以今天分享三个Elasticsearch的简单技巧。没有什么高大上,就是简单工作总结。
一、使用alias(别名)管理索引
首先我们要说的是索引alias
。
alias
就是一个快捷方式或者说软链接,可以指向1个或者多个索引,通过alias
我们可以实现更好的实现索引的管理, 比如查找搜索,分类数据,切换索引等。
- 创建,删除别名
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获取操作几天的索引数据了。
之前: curl localhost:9200/day1,day2/_search 现在: curl localhost:9200/week1/_search
二、使用cat API查看集群信息
之前我们需要查看集群信息都是通过集群API获取,但是返回数据为JSON格式,不利于理解,而且也不便于记忆。为快速方便看集群的各种监控或者配置情况,我们可以通过使用一个友好API, cat API
。
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
可以看到具体字段及对应的信息。
三、维护节点推迟再平衡
在服务版本升级或者需要进行一些维护操作,我们通常会重启服务,但是我当我们关闭一个节点的时候,集群会发现节点丢失会进行再平衡,如果集群维护时间短(集群数据量大),这样会造成数据分片再平衡花费较长时间。
通过下面方式关闭分片分配:
PUT /_cluster/settings { "transient" : { "cluster.routing.allocation.enable" : "none" } }
然后关闭单个节点,维护升级,重启,最后进行如下设置:
PUT /_cluster/settings { "transient" : { "cluster.routing.allocation.enable" : "all" } }
通过上面的三个简单方法,希望大家在使用ES将更加得心应手。