elasticsearch高级配置之分片分布规则设置

ElasticSearch 设置-配置(二)集群级分片分配和路由设置 文章目录配置ElasticSearch集群级分片分配和路由设置集群级分片分配设置分片重新平衡设置分片平衡启发式设置基于磁盘的分片分配设置 配置ElasticSearch 集群级分片分配和路由设置 分片分配是将分片分配给节点的过程。这可能发生在初始恢复、副本分配、重新平衡或添加或删除节点时。 master 的主要作用之一是决定将哪些分片分配给哪些节点,以及何时在节点之间移动分片以重新平衡集群。 有许多设置可用于控制分片分配过程: Cluster-level shard allocation settings 阅读详情
Java代码  收藏代码
  1. cluster.routing.allocation.allow_rebalance  

设置根据集群中机器的状态来重新分配分片,可以设置为always, indices_primaries_active和indices_all_active,默认是设置成indices_all_active来减少集群初始启动时机器之间的交互。 
Java代码  收藏代码
  1. cluster.routing.allocation.cluster_concurrent_rebalance  

设置在集群中最大允许同时进行分片分布的个数,默认为2,也就是说整个集群最多有两个分片在进行重新分布。 
Java代码  收藏代码
  1. cluster.routing.allocation.node_initial_primaries_recoveries  

设置指定初始每个节点。由于多数情况下是使用local的gateway,这应该会更快, 
Java代码  收藏代码
  1. cluster.routing.allocation.node_concurrent_recoveries  

设置在节点中最大允许同时进行分片分布的个数,默认为2 
Java代码  收藏代码
  1. cluster.routing.allocation.disable_allocation  

使主要分片或副本的分布失效。要知道,如果主分片不存在(那个节点挂了)那么其副本仍然会被提升为主分片,这个设置只有在动态地使用集群更新设置api调用时才生效。 
Java代码  收藏代码
  1. cluster.routing.allocation.disable_replica_allocation  

使副本分布失效。和上一个设置一样,只有动态地使用集群更新设置api调用时才生效。 
Java代码  收藏代码
  1. indices.recovery.concurrent_streams  

当从一个点(peer)恢复分片时当前节点最多允许的文件读取流的个数,默认为5 

自定义分片分布规则 
可以通过设置分片的分布规则来人为地影响分片的分布,下面是个例子: 

假设我们有几个机架。当我们启动一个节点,我们可以设置一个叫rack_id(其它名字也可以)的属性,例如下面设置:
 
Java代码  收藏代码
  1. node.rack_id: rack_one  

上面这个例子设置了一个属性叫rack_id,它的值为rack_one。现在,我们要设置rack_id作为分片分布规则的一个属性(在所有节点都要设置)。 
Java代码  收藏代码
  1. cluster.routing.allocation.awareness.attributes: rack_id  

上面设置意味着rack_id会用来作为分片分布的依据。例如:我们启动两个node.rack_id设置rack_one的节点,然后建立一个5个分片,一个副本的索引。这个索引就会完全分布在这两个节点上。如果再启动另外两个节点,node.rack_id设置成rack_two,分片会重新分布,但是一个分片和它的副本不会分配到同样rack_id值的节点上。

However if rack_two were to fail, taking down both of its nodes, Elasticsearch will still allocate the lost shard copies to nodes in rack_one.


可以为分片分布规则设置多个属性,例如: 

Java代码  收藏代码
  1. cluster.routing.allocation.awareness.attributes: rack_id,zone  

注意:当设置了分片分布属性时,如果集群中的节点没有设置其中任何一个属性,那么分片就不会分布到这个节点中。 

强制分布规则 
更多的时候,我们不想更多的副本被分布到相同分布规则属性值的一群节点上,那么,我们可以强制分片规则为一个指定的值。 
例如,我们有一个分片规则属性叫zone,并且我们知道有两个zone,zone1和zone2.下面是设置:
 
Java代码  收藏代码
  1. cluster.routing.allocation.awareness.force.zone.values: zone1,zone2  
  2. cluster.routing.allocation.awareness.attributes: zone  

现在我们启动两个node.zone设置成zone1的节点,然后创建一个5个分片,一个副本的索引。索引建立完成后只有5个分片(没有副本),只有当我们启动node.zone设置成zone2的节点时,副本才会分配到那节点上。 
分片分布过滤 
允许通过include/exclude过滤器来控制分片的分布。这些过滤器可以设置在索引级别上或集群级别上。下面是个索引级别上的例子: 

假如我们有四个节点,每个节点都有一个叫tag(可以是任何名字)的属性。每个节点都指定一个tag的值。如:节点一设置成node.tag: value1,节点二设置成node.tag: value2,如此类推。我们可以创建一个索引然后只把它分布到tag值为value1和value2的节点中,可以通过设置 
index.routing.allocation.include.tag 为value1,value2达到这样的效果,如:
 
Java代码  收藏代码
  1. curl -XPUT localhost:9200/test/_settings -d '{      
  2.     "index.routing.allocation.include.tag" : "value1,value2"      
  3. }'  


与此相反,通过设置index.routing.allocation.exclude.tag为value3,我们也可以创建一个索引让其分布在除了tag设置为value3的所有节点中,如: 
Java代码  收藏代码
  1. curl -XPUT localhost:9200/test/_settings -d '{      
  2.     "index.routing.allocation.exclude.tag" : "value3"      
  3. }'  


include或exclude过滤器的值都会使用通配符来匹配,如value*。一个特别的属性名是_ip,它可以用来匹配节点的ip地址。 
显然,一个节点可能拥有多个属性值,所有属性的名字和值都在配置文件中配置。如,下面是多个节点的配置:
 
Java代码  收藏代码
  1. node.group1: group1_value1   
  2. node.group2: group2_value4  


同样的方法,include和exclude也可以设置多个值,如: 
Java代码  收藏代码
  1. curl -XPUT localhost:9200/test/_settings -d '{      
  2.     "index.routing.allocation.include.group1" : "xxx"      
  3.     "index.routing.allocation.include.group2" : "yyy",      
  4.     "index.routing.allocation.exclude.group3" : "zzz",      
  5. }'  


上面的设置可以通过索引更新的api实时更新到索引上,允许实时移动索引分片。 

集群范围的过滤器也可以定义,可以通过集群更新api实时更新到集群上。这些设置可以用来做让一些节点退出集群的操作。下面是通过ip地址去掉一个节点的操作:
 
Java代码  收藏代码
  1. curl -XPUT localhost:9200/_cluster/settings -d '{      
  2.     "transient" : {      
  3.         "cluster.routing.allocation.exclude._ip" : "10.0.0.1"      
  4.     }      
  5. }'  
ElasticSearch集群shard均衡策略 可以通过设置分片的分布规则来人为地影响分片的分布,示例如下:现在添加一条策略,设置rack_id作为分片规则的一个属性上面设置意味着rack_id会用来作为分片分布的依据。例如:我们启动两个设置r1的节点,然后建立一个5个分片,一个副本的索引。这个索引就会完全分布在这两个节点上。如果再启动另外两个节点,设置成r2,分片会重新分布,但是一个分片和它的副本不会分配到同样rack_id值的节点上。注意:当设置了分片分布属性时,如果集群中的节点没有设置其中任何一个属性,那么分片就不会分布到这个节点中。 阅读详情

相关推荐

ELK集群搭建过程

ELK集群搭建过程

菜鸟 2662

分布式搜索elasticsearch高级配置之(一)------分片分布规则设置

分片分布是把索引分片分布到节点的过程。这个操作会在初次启动集群,副本分配,负载均衡,或增加删除节点时进行。下面是一些与分片分布相关的设置:cluster.routing.allocation.allow_rebalance设置根据集群中机器的状态来重新分配分片,可以设置为always, indices_primaries_active和indices_all_active,默认是设置成indice...

云计算? 1004

ES-分片路由(routing)

ElaticSearch 分片路由是个比较高级的功能了,一般性能没有遇到瓶颈是不会动用得。

莫莫绵的博客 8096

分布式搜索elasticsearch高级配置之------分片分布规则设置(转)

分片分布是把索引分片分布到节点的过程。这个操作会在初次启动集群,副本分配,负载均衡,或增加删除节点时进行。 下面是一些与分片分布相关的设置:cluster.routing.allocation.allow_rebalance 设置根据集群中机器的状态来重新分配分片,可以设置为always, indices_primaries_active和indices_all_active,默认是设置成indices_all_active来减少集群初始启动时机器之间的交互。cluster.routing.allocati

superwx1985的博客 1134

MTK平台高效部署Qwen2.5大模型:从转换到推理全流程解析

本文详细解析了在联发科(MTK)NeuroPilot平台上高效部署Qwen2.5大模型的全流程。内容涵盖从环境搭建、模型转换、量化优化到编译部署与上机推理的完整步骤,重点分享了模型转换与模型运行的关键实践与避坑指南,旨在帮助开发者将大语言模型成功集成至移动及边缘设备。

zeta9的博客 376

本体(Ontology)概述

认识本体        本体(Ontology)的概念源自于哲学领域,在哲学中的定义为“对世界上客观事物的系统描述,即存在论”。哲学中的本体关心的是客观现实的抽象本质。而在计算机领域,本体可以在语义层次上描述知识,可以看成描述某个学科领域知识的一个通用概念模型。德国学者Studer在1998年给出了本体的相关定义“本体是共享概念模型的形式化规范说明”。这个定义包含了四层含义:即共享(share)...

baijinswpu的博客 7万+

分布式搜索elasticsearch高级配置之------分片分布规则设置

分片分布是把索引分片分布到节点的过程。这个操作会在初次启动集群,副本分配,负载均衡,或增加删除节点时进行。 下面是一些与分片分布相关的设置: cluster.routing.allocation.allow_rebalance 设置根据集群中机器的状态来重新分配分片,可以设置为always, indices_primaries_active和indices_all_active,默认是设

pan-zy的专栏 4472

modbus-esp8266库深度解析:工业级Modbus协议栈实现

Modbus是一种广泛应用于工业自动化领域的通用串行通信协议,其核心在于标准化的功能码、寄存器模型与帧结构设计。基于RTU、ASCII和TCP三种传输变体,Modbus协议通过主从架构实现设备间可靠数据交互,具备低开销、高兼容性与强实时性等技术价值。在边缘计算与工业物联网场景中,它被广泛用于PLC通信、传感器数据采集、HMI集成及远程固件升级(FOTA)等关键任务。针对ESP8266/ESP32等Wi-Fi微控制器平台,modbus-esp8266库提供了完整协议栈支持,涵盖多实例并发、回调驱动架构、零拷贝

weixin_42315569的博客 349

elasticsearch高级配置之(一)----分片分布规则设置

Java代码   cluster.routing.allocation.allow_rebalance   设置根据集群中机器的状态来重新分配分片,可以设置为always, indices_primaries_active和indices_all_active,默认是设置成indices_all_active来减少集群初始启动时机器之间的交互。  Java代码  

皮皮猪的专栏 936

AppFlow实战:零代码将Dify接入企业微信的完整指南

本文提供了一份零代码将Dify AI应用接入企业微信的完整实战指南。通过使用阿里云AppFlow作为无代码连接器,详细讲解了从获取Dify API密钥、创建企业微信应用到配置自动化流程的全过程,帮助团队快速将AI能力无缝融入日常协作,大幅提升工作效率。

php55的博客 808

(详细总结)python爬取 163收件箱邮件内容,收件箱列表的几种方法(urllib, requests, selenium)

需求:最近有一个需求,需要将163邮箱收件箱里面的所有邮件的内容全部copy下来,整理到一个word里面,不多也就28页的邮件(不要问我为什么有这需求,不告诉你),自己手动去ctrl+ cv 的话,估计要搞吐。然后就想能不能用python的爬虫来实现,虽然过程比较苦(后期改bug改的要吐了)。但是会后还是将需求实现了。这基本也算是入门了 urllib、requests、selenium这几个py...

man_tou_22 1万+

elasticsearch高级配置一 ---- 分片分布规则设置

Java代码 cluster.routing.allocation.allow_rebalance 设置根据集群中机器的状态来重新分配分片,可以设置为always, indices_primaries_active和indices_all_active,默认是设置成indices_all_active来减少集群初始启动时机器之间的交互。 Java代码 ...

weixin_30449453的博客 106

手把手教你用Xilinx SelectIO IP核搞定ADS42LB69高速ADC的DDR数据采集(附仿真调试技巧)

本文详细介绍了如何使用Xilinx SelectIO IP核实现ADS42LB69高速ADC的DDR数据采集,包括IP核配置、仿真验证和硬件调试技巧。通过精准的时序控制和实战调试方法,解决高速数据采集中的时序对齐问题,提升系统稳定性和可靠性。特别适合FPGA工程师和高速ADC接口设计者参考。

weixin_42533622的博客 152

elasticsearch高级配置之分片分布

elasticsearch高级配置之分片分布   分片分布是把索引分片分布到节点的过程。这个操作会在初次启动集群,副本分配,负载均衡,或增加删除节点时进行。下面是一些与分片分布相关的设置:cluster.routing.allocation.allow_rebalance设置根据集群中机器的状态来重新分配分片,可以设置为always, indices_primaries_active和in...

hebeind100的博客 181

机器人强化学习入门学习笔记

如果你追求高精度动力学仿真、用于强化学习或机器人研究,MuJoCo 是一个非常优秀的选择。如果需要快速实验、使用真实机器人模型,PyBullet 或 Gazebo可能更合适;如果你追求大规模并行训练,Isaac Gym 或 BraX会更高效。legged gym底层是​编辑isaacgym,基于gpu训练可以多环境并行训练,收敛到一个稳定行走的策略快。本视频MuJoCo基于cpu训练很慢。

xiaomu_347的博客 1454

【计算机视觉40例】案例08:石头剪刀布手势识别

计算机视觉40例——从入门到深度学习(OpenCV-Python)》在介绍Python基础、OpenCV基础、计算机视觉理论基础、深度学习理论的基础上,介绍了计算机视觉领域内具有代表性的40个典型案例。这些案例中,既有传统的案例(数字识别、答题卡识别、物体计数、缺陷检测、手势识别、隐身术、以图搜图、车牌识别、图像加密、指纹识别等),也有深度学习案例(图像分类、风格迁移、姿势识别、实例分割等),还有人脸识别方面的案例(表情识别、驾驶员疲劳监测、识别性别与年龄等)。......

计算机视觉之光 2157

ElasticSearch篇——初始、认识、拿下ElasticSearch,一篇文章带你入门ES,涵盖ES概念,对比Solr,ES核心概念以及常见工具head、kibana安装和使用,保姆级教程!!!

一、学习背景曾经,如果我们在网页上查询某些数据,在输入框中输入部分内容,后台默认可能是通过SQL的模糊查询进行操作的。但是在现今的大数据时代,有几百万条数据,那么常规的模糊查询就非常的缓慢了,慢慢的演进出来了索引,但是还是达不到大数据的要求。那么,就有必要学习一款分布式全文搜索引擎。那么ElasticSearch主要功能就是搜索,如果在某个网站上需要用到搜索功能基本上都是用的ElasticSearch二、ES的起源。

我热爱学习,也乐于分享。无论是科技前沿的洞见,还是生活中的小技巧,我都会在这里与你分享。我相信,知识就是力量,而分享则能让这份力量得到更好的传递。 8万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

上一篇: ES内存那点事
下一篇: 让Elasticsearch集群冷热分离、读写分离
笑天居士
博客等级 码龄24年 292粉丝 136原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值