欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Elasticsearch一些基础概念理解

程序员文章站 2022-05-13 23:11:35
...

转载请标明出处:http://donlianli.iteye.com/blog/1905552

 

熟悉ES中的几个关键概念:

节点(Node):一个elasticsearch运行的实例,其实就是一个java进程。一般情况下,一台机器运行在一台机器上。

集群(Cluster): 好几个有相同集群名称的节点(Node)。

索引(Index):有点象数据库。

类型(Type):可以看做是数据库中的表

分片(Shard):就是一个lucene index。每个index都会划分成几个shard。每个shard可能是主shard或者是一个副本(replica)。

 

 

具体lucene我也不熟悉,但是反复读了3篇关于这些概念呢的解释,大概对ES的这些概念有了一点理解。

在ES中创建索引时(就相当于创建一个数据库),ES会默认为这个数据库创建5个分片,这5个分片都是主分片,每个分片又默认创建一个副本(replica)。当向这个数据库插入记录时,ES会根据内定规则,判断这个记录应该记录到哪个分片上。

再来说说replica。当只有一个es的节点时,默认replica是不存在的,ES只有发现有两台不同IP的ES实例时,才会创建副本(replica),其实这个副本也算一个shard。内容跟原来的shard完全一样,但是这个副本不会进行插入等操作。

 

每启动一个ES实例(即java进程)。ES会自动对分片进行重划分。当运行了两个ES实例,ES默认会将分片进行重平衡,比如启动了两个ES实例,则5个分片被不均衡的重分到两个实例上。最终其中一个实例上,有3个主分片。另外一个实例上,有2个主分片。另外还有一套副本,也被均分在这两个实例上,也就是说,两个实例共10个shard。如果你扩展到10个实例,那么,每个实例将只有一个shard。

 

以上只是个人理解。有理解不正确的地方,还请指出,谢谢!

 

参考资料:

http://*.com/questions/15694724/shards-and-replicas-in-elasticsearch

http://*.com/questions/12409438/when-do-you-start-additional-elasticsearch-nodes/12414123

http://elasticsearch-users.115913.n3.nabble.com/Shards-and-replicas-td2819984.html

 

对这类话题感兴趣?欢迎发送邮件至donlianli@126.com
关于我:邯郸人,擅长Java,Javascript,Extjs,oracle sql。
更多我之前的文章,可以访问 我的空间