Elasticsearch高可用和路由规则,elasticsearch路由
Lucene
- 迄今为止最先进,性能最好的,功能最全的搜素引擎库。
Elasticsearch
- 基于Apache Lucene 开源的搜素引擎,以Lucene为核心进行了封装,提供相关RestFul API 的调用方式,让使用更加简单有效。
ELK stack
- 以Elasticsearch为核心组件,日志通过Logstash 进行解析和结构化的构造,然后输入Elasticsearch进行索引的创建和结构化的存储,前端展示通过Kibana对Elasticsearch结构化数据做聚合运算和出图展示。
- Beat组件在ELK中担当日志收集终端的角色。代替之前logstash收集的功能,以速度快和性能好为其优势。
Elasticsearch集群和分片路由(高可用)
用es代替Elasticsearch
- Es的集群很简单,只需要简单的配置就能启动构成工作集群。
elasticsearch.yml中集群名字一样即可,es之间自动发现节点。
- 在数据进入后,es默认创建5个分片(0,1,2,3,4),集群状态为yellow。es会自动同步各个分片和其副本分片的数据。
API查看分片状态:
curl -XGET 192.168.59.63:9200/_cat/shards
API查看节点健康状态:
curl -XGET
192.168.59.63:9200/_cluster/health?pretty
API查看节点角色:
curl -XGET
192.168.59.63:9200/_cat/nodes?v
再启动一个es的时候,es会默认创建一个副本分片,这个时候分片总数为10个
再启动一个es,es会自动均衡将分片自动加载到三台es中
- 这个时候模拟故障关掉一台es,丢掉的分片会在其他两台中找到,并恢复。
- es路由到分片的算法过程
shard= hash(routing)% number_of_primary_shards
routing是一个字符串,默认是索引的_id值,也可以自己定义。
这个routing字符串通过哈希函数生成一个数字,然后除以主切片的数量得到一个余数(remainder),
余数的范围永远是0到number_of_primary_shards - 1,这个数字就是特定文档所在的分片。
- 由上面可以看出,数据存在特定分区内,如果我们放数据的时候就指定好 routing值,查询的时候就可以直接到特定地点分片上查找,让查询变得高效得多
放数据 指定 routing
curl -XPUT 192.168.59.63:9200/test/doc/1?routing=a -d '{ "name": "1" }'
查数据
curl -XGET '192.168.59.63:9200/test/_search?pretty&q=*:*&routing=a'
本站文章为和通数据库网友分享或者投稿,欢迎任何形式的转载,但请务必注明出处.
同时文章内容如有侵犯了您的权益,请联系QQ:970679559,我们会在尽快处理。