1.elasticsearch 的主要特征
(1)合理的默认配置
使得用户在简单安装以后能直接使用 elasticsearch 而不需要任何额外的
调试,这包括内置的发现和自动配置功能。
(2)默认的分布式工作模式
每个节点总是假定自己是某个集群的一部分或将是某个集群的一部分。
一旦工作启动节点便会加入某个集群。
(3)对等架构(P2P)可以避免单点故障(SPOF)
节点会自动连接到集群中的其他节点,进行互相的数据交换和监控操作。
(4)易于像集群扩充新节点。
不论是从数据容量的角度还是数量角度。
(5)准实时
搜索和版本同步。考虑到 elasticsearch 的分布式特征,查询延迟和节点
之间临时的数据不同步是难以避免的。elasticsearch 提供额外的机制用户版本
同步。
2.elasticsearch 的工作流程
启动过程
当 elasticsearch 节点启动时,它使用广播技术(也可配置为单播)来发现同一个
集群中的其他节点并与他们连接。
集群中会有一个节点被选为管理节点。该节点负责集群的状态管理以及在集群
拓扑结构变化时做出反应,分发索引分片到集群的相应节点上。
elasticsearch 基于对等架构,不需要关心具体的管理节点。
管理节点读取集群的状态信息,并在必要时进行恢复处理。在该阶段,管理节点
会检查所有索引分片并决定哪些分片将用于主分片。然后,整个集群将进入黄色状态。
这意味着集群可以执行查询,但是系统的吞吐量以及各种可能的状态是未知的
(这种状态可以理解为所有的主分片已经分配出去了,而副本没有),因而接下来就是
要寻找到冗余的分片并用作副本。如果某个主分片的副本数过少,管理节点将决定
基于某个主分片创建分片和副本。如果一切顺利,将进入绿色状态。
3.故障检测
集群正常工作时管理节点会监控所有可用节点,检查他们是否正在工作。
如果任何节点在预定义的超时时间内没有响应,则认为该节点已经断开。然后开始启动错误
处理过程。这意味着在集群-分片之间重新做平衡,因为之前已断开节点上的那些
分片不可用了。剩下的节点要肩负起相应的责任。对每个丢失的主分片,一个新的主分片
将会从原来的主分片的副本中选举出来。新分片和副本的放置策略是可配置的,用户
可以根据具体需求进行配置。
4.与 elasticsearch 通信
elasticsearch 假设数据由URL携带或者以JSON文档的形式由HTTP消息携带。
使用JAVA或者JVM语言的用户,应该了解JAVA API,它除了REST API提供的所有功能
以外还有内置的集群发现功能。
Elasticsearch 内部也是使用 JAVA API 进行节点间通信。