jxdiscuz 发表于 2017-5-20 12:49:07

Elasticsearch一些基础概念理解

  转载请标明出处: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://stackoverflow.com/questions/15694724/shards-and-replicas-in-elasticsearch
  http://stackoverflow.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。
更多我之前的文章,可以访问 我的空间
页: [1]
查看完整版本: Elasticsearch一些基础概念理解