
1.ElasticSearch的工作流程
1.启动过程
当ElasticSearch节点启动时,使用发现(discovery)模块来发现集群中的其他节点(配置文件的集群名称)并连接.ElasticSearch会发送广播,以找到相同集群名称其他节点。
集群选举一个节点为主节点。该节点负责分发索引分片到集群相应节点。
管理节点读取集群状态信息,并且可以进行恢复处理。该阶段,管理节点会检查有那些索引分片,并决定哪些为主分片。
2.故障检测
集群正常工作,管理节点会监控所有可用节点。如果超时未响应则认为节点断开,就要重新选择新的主节点。
对每个丢失的主分片,一个新的主分片将从原来的主分片的副本选出来。新分片和副本的放置策略是可配置的。
3.与ElasticSearch通信
3.1索引数据
1.ElasticSearch提供多种索引数据的方式,最简单的就是使用索引API,允许用户发送一个文档到特定索引
2.通过bulk API或者UDP bulk API一次发送多个文档到集群
其中1使用HTTP协议,2使用UDP协议。后者速度快,但是不可靠
建索引操作只发生在主分片上,而不是副本。当一个索引请求被发送到一个节点的时候,如果该节点没有主分片或者只有副本,那么这个请求会被转发到拥有正确的主分片的节点。然后,该节点把索引请求群发给所有副本,最后,所有副本更新完结束索引过程。
3.2查询数据
查询不是一个简单的,单步骤的操作。一般分为两个阶段,分散阶段和合并阶段。分散阶段将查询分发到包含相关文档的多个分片中执行查询,在合并阶段则从众多分片中收集返回结果。然后进行操作。