ES集群, 路由,别名
节点类型:
1.master node (master-eligible node) 主节点,管理节点分片(默认都是),监视子节点状态
在elasticsearch.yml 中配置: node.master:true 表示当前节点可作为主节点备选节点
2.data node 数据节点,可以保存分片数据, 每个节点不做任何配置默认都是datanode
配置 node.data:false 则表示当前节点可不存数据,(只作为主节点)
3.ingest node 用于预处理操作 node.ingest:false 关闭
4.coordination node 协调节点 , 此模式不可关闭, 即所有节点都是这种节点
5.maching learning node 用于机器学习的节点
总结 :一个ES节点可以承担多种节点角色
数据写入
1.主分片在每个节点只有一份
2.主分片数不可改
3.副分片数可随时改动,运行时通过 put index/_settings 来修改
服务发现
1. 7.0以前用的zendiscover来发现集群
2. 新节点要加入集群, 会连接配置文件中 种子节点列表的节点,连接上之后,种子节点会把自身知道的其他种子列表发给新节点,新节点会继续连接新的种子节点,
discovery.seed_hosts=["192.168.0.3","192.168.0.4"], 最好包含一个master-eligible node
3. 直到找到masternode为止
4. 如果集群内出现脑裂(网络问题..出现多个主节点),由集群自己控制处理(在7.0以前,可以配置discovery.zen.minimum_master_nodes=n 来控制集群数少于这个值则不会产生主节点)
节点停用
put _cluster/settings
{
"transient":{
"cluster.routing.allocation.exclude._name":"node-1" #通过节点name
},
"transient":{
"cluster.routing.allocation.exclude._ip" :"192.168.2.5" #通过节点ip
}
}
影响ES性能的主要因素是堆内存大小, 一般1G内存对应20个分片,每个分片硬盘大小20-40G, 不要超过50G, 否则性能急剧下降
_cluster/_healty?pretty 查看集群健康情况
_cat/shards/索引名?pretty 分片查看
索引名/_search_shards?pretty 显示查询在哪些节点哪些分片
索引名/_search_shards?pretty&routing=1 指定routing后h
不使用ES默认路由, 自定义路由key,减少查询时扫描shards的个数,提高效率
put 索引名/_doc/a?routing=key1
get 索引名/_doc/a?routing=key1
索引加别名 --相当于sql的视图
索引与别名是多对多关系
#创建别名
put /index名
{
"aliases":{
"index1":{
"filter":{
"term":{
}
}
}
}
}
put /index名/_alias/别名名称 #给已存在的index加别名
{
"filter":{
"term":{
}
}
}
#删除别名
delete /index名/_alias/别名名称
get _cat/aliases #获取ES中所有别名
#使用别名
get 别名/_search #与直接查index方式相同
别名可以与routing 结合使用
_rollover接口 滚动存储,索引满足指定条件后会创建新索引替换老索引, 索引的别名不变
put /indexa-1 要想使用滚动,索引名必须数字结尾,
{
"aliases":{
"aaa":{}
}
}
put /aaa/_rollover 滚动后的索引名,会保留前缀部分,而累加后面的数字并补齐6位
{
"conditions":{
"max_age":15, #存活时间达到15天
"max_docs":10000 #文档数超过10000
"max_size":"4gb" #索引大小超4g
}
}
还有其他一堆接口
_split 主分片分裂,在新索引的基础上对旧索引进行分裂,分裂前需要先blocks.write:true 把写入操作阻塞,分裂后再解除
_shrink 缩减分片,也是创建新索引
_reindex 索引copy,把旧索引内容copy到新索引
ES的缓存形式:节点查询缓存/分片请求缓存/text fieldata
_refresh 主动刷新,强制刷新落盘
_cache接口 清除缓存
_stats 服务状态
_segments 数据在lucene底层分片情况
_shards_stores 查询索引分片的情况
_count 查询索引文档总数
_msearch/_bulk/_mget 批量查询,批量增删改,批量搜索
_validate 在不执行查询的情况下, 评估一个查询是否可以正常运行
_field_caps 检查某个字段支持的方法
ILM