Elasticsearch实现分布式搜索主要依赖于以下几个关键词:
分片(shard): Elasticsearch将索引数据划分为多个分片存储在不同的节点上,每个分片都是独立的,可以独立进行搜索和索引操作。
副本(replica): Elasticsearch在不同节点之间复制分片来提高可用性,并且通过负载均衡来分配搜索请求到不同的节点进行处理。
路由(routing): Elasticsearch使用路由来确定哪个分片存储哪些文档,路由值与文档ID相关联。在搜索时,Elasticsearch会根据路由值将搜索请求发送到对应的分片上。
集群协调器(cluster coordinator): Elasticsearch集群协调器是一个负责协调集群状态的节点,它负责分配分片、副本、处理故障转移等任务。
搜索请求路由(search request routing): 当收到一个搜索请求时,Elasticsearch会将请求路由到相应的分片上,并将搜索结果合并返回。
因此,Elasticsearch通过将索引数据划分为多个分片、复制分片以提高可用性、使用路由来确定哪个分片存储哪些文档、集群协调器协调集群状态、搜索请求路由将搜索请求路由到相应的分片上,并将结果合并返回来实现分布式搜索。