欢迎投稿

今日深度:

ElasticSearch的数据结构,elasticsearch

ElasticSearch的数据结构,elasticsearch


           Elasticsearch的底层搜索是以lucene来实现的。其主要是提供了一个分布式的框架来扩展了lucene,从而实现大数据量的,分布式搜索功能。其实现思想很简单,将大数据量分而治之,哈希分成多份,然后对每一份进行“lucene处理”——用lucene索引、检索,最后将每份结果合并返回。
        这里主要介绍下支持这种分布式功能得以实现的数据结构。Elasticsearch中的routingtable信息。


如上图所示,Elasticsearch中的路由信息是分这么四层结构的:
1)RoutingTable:是整个集群的总体路由信息。每个Elasticsearch都可以建立多个索引,这里存储的是各个索引的信息。
2)IndexRoutingTable:是针对一个索引的路由信息。每个索引可以被拆分成不同的shard,这里存储的是各个shard的信息。
3)IndexShardRoutingTable:这个概念不好解释。Elasticsearch的shard是分为主副本的。这里的副本shard可以简单理解为对一个主本shard的备份。他们的数据是相同的,id号是相同的,所不同的是主副本标志位以及所处node等信息。IndexShardRoutingTable中存储针对同一个id号的,所有主副本shard的信息。(可以理解为shard的一个集合。)
4)ShardRouting:分片信息,是路由表信息的最小单元,主要保存了shardId,所属index,所属node节点,是否主本等信息。
还可以从下图了解下:


针对Elasticsearch数据的内存结构,下面给出一张其数据的存储结构如下图所示:


         是我在本机搭建的Elasticsearch集群,所生成的数据。本集群是3个节点,因此在nodes文件夹下,会有0、1、2文件夹对应不同的node。我建立了两个索引,分别叫做test和twitter。针对twitter索引,分成5个shard,每个shard只有一个副本。因此从图中可以看到,twitter文件夹下的子文件夹应该是:0 0 1 1 2 2 3 3 4 4.他们均衡的分布在三个node上。并且因为其采用了这种文件夹结构,所以针对同一个shard的主副本是不能在同一个node上的。
结合上面的图片,就会有比较清晰的认识。
Elasticsearch同时还提供了另外一种纬度的路由视图是:RoutingNodes——RoutingNode——MutableShardRouting。

www.htsjk.Com true http://www.htsjk.com/Elasticsearch/36661.html NewsArticle ElasticSearch的数据结构,elasticsearch            Elasticsearch的底层搜索是以lucene来实现的。其主要是提供了一个分布式的框架来扩展了lucene,从而实现大数据量的,分布式搜索功能。其实...
相关文章
    暂无相关文章
评论暂时关闭