ElasticSearch主分片数量可以在后期更改吗
不可以。索引的主分片数index.number_of_shards的值不能动态设置。只能在索引创建的时候被指定。
那有什么解决办法。
ElasticSearch中设置了重新索引机制来实现。简单来说,重新索引就是创建一个和原索引库结构属性都基本一样的新的索引库,然后将原索引库中的数据复制到新的索引库当中。在新的索引库中,除了需要变更的地方,比如某些字段的数据类型和分片数,其它的所有属性都一样。
另外:在实现重新索引之后,要将程序中的索引库指向新的索引库
ElasticSearch的Master节点和候选Master节点有什么区别?
主节点的主要职责是和集群操作相关的内容,如创建或删除索引,跟踪哪些节点是集群的一部分,并决定哪些分片分配给相关的节点。稳定的主节点对集群的健康是非常重要的,默认情况下任何一个集群中的节点都有可能被选为主节点,索引数据和搜索查询等操作会占用大量的cpu,内存,io资源,为了确保一个集群的稳定,分离主节点和数据节点是一个比较好的选择。
候选主节点不仅有选举权还有被选举权,每个节点主要负责索引创建,索引删除,追踪节点信息和决定分片分配节点等。
简单总结:
主节点负责集群相关的操作,例如创建或删除索引,跟踪哪些节点是集群的一部分,以及决定将哪些分片分配给哪些节点。
拥有稳定的主节点是衡量集群健康的重要标志。
而候选主节点是被选具备候选资格,可以被选为主节点的那些节点。
lucene 的分析器(analyzer)与分词器(tokenizer)和过滤器(tokenfilter) --(很少有问,做个了解)
1.analyzer主要包含分词器跟过滤器,功能是:将分词器跟分析器进行合理的组合,使之产生对文本分词和过滤效果。因此,分析器使用分词和过滤器构成一个管道,文本在滤过这个管道之后,就成为可以进入索引的最小单位。
2.tokenizer主要用于对文本资源进行切分,将文本规则切分为一个个可以进入索引的最小单元。
3.tokenfilter主要对分词器切分的最小单位进入索引进行预处理,例如:大写转小写,复数转单数,也可以复杂(根据语义改写拼写错误的单次)
Elasticsearch 是如何实现Master 选举的?
1、Elasticsearch 的选主是ZenDiscovery 模块负责的, 主要包含Ping(节点之间通过这个RPC 来发现彼此)和Unicast(单播模块包含一个主机列表以控制哪些节点需要ping 通)这两部分;
2、对所有可以成为master 的节点( node.master: true)根据nodeId 字典排序,每次选举每个节点都把自己所知道节点排一次序,然后选出第一个(第0 位)节点,暂且认为它是master 节点。
3、如果对某个节点的投票数达到一定的值(可以成为master 节点数n/2+1)并且该节点自己也选举自己,那这个节点就是master。否则重新选举一直到满足上述条件。
4、补充: master 节点的职责主要包括集群、节点和索引的管理,不负责文档级别的管理;data 节点可以关闭http 功能*。