ElasticSearch的工做机制

ElasticSearch,和Solr同样,是底层基于Apache Lucene,且具有高可靠性的企业级搜索引擎。数据库

ElasticSearch中的一些概念其实和关系型数据库都有对应关系,好比数据库在ES中被称为索引,表在ES中被称做Type。json

具体对应关系见下表。curl

clipboard


ElasticSearch中的Replica是副本的意思,建立副本的好处有两个,1,能够分流部分查询请求,2,若是集群中的某个分片丢失了,就可使用这个副本将数据所有找回来,由于这个缘由,副本分片和源分片不会放在同一节点上。 ES中每个索引均可以被分红多个分片,但不必定每一个分片都有副本,可是一旦建立了副本,就会有主分片的说法(做为复制源的分片),分片和副本的数量能够在索引建立的时候指定。下图是副本和分片的示意图,分片和它的副本不会在同一个节点上。ide


clipboard[1]

在索引建立以后,你能够在任什么时候候动态地改变副本的数量,可是你过后不能改变分片的数量。  默认状况下,Elasticsearch中的每一个索引被分片5个主分片和1套副本,这意味着,若是你的集群中至少有两个节点,你的索引将会有5个主分片和另外5个副本,这样的话每一个索引总共就有10个分片。测试


当ES的一个节点启动后,它会经过广播方式找到集群中的其余节点,而且创建链接。搜索引擎

在集群中,其中的某个节点会被选取做为主节点,这个主节点负责管理集群状态。这个主节点对于用户来讲是透明的,用户不须要知道哪一个节点是主节点。任何操做均可以发送到任何节点。必要的时候,任何节点能够并行的发送子查询到其余节点,而且将获得的响应合并后发送给用户,这些操做都不须要访问主节点。url


主节点读取集群信息,在读取过程当中,它会检测分片的状况,哪些分片是主分片,而且是可用的,在这一步以后,全部的分片已经准备好了,而副本尚未。下一步的操做就是找到那些已经被复制过的分片,将他们做为副本。若是一切顺利,那么ES启动成功了,全部的分片和副本都已经准备好了。插件


在ES工做的时候,主节点会监控全部的节点是否正常,默认配置为:节点每隔1s主节点会发送1次心跳,超时时间为30s,测试次数为3次,超过3次,则认为该节点同主节点已经脱离了。若是某一个节点出现问题,ES认为这个节点损坏,该节点会从集群中删除,而且ES会从新平衡整个集群。blog


ES经过Query DSL (基于json的查询语言)来查询数据,在ES内部,每次查询分红2个步骤,分散和聚合,分散是指查询全部相关的分片,聚合是指把全部分片上的查询结果合并,排序,处理而后在返回给客户端。排序


ElasticSearch 有4中方式来构建数据库,最简单的方法是使用index API,将一个Document发送到特定的index,通常经过curl tools实现。第二第三种方法是经过bulk API和UDP bulk API。二者的区别仅在于链接方式。第四种方式是经过一个插件-river。river运行在ElasticSearch上,而且能够从外部数据库导入数据到ES中。须要注意的是,数据构建仅在分片上进行,而不能在副本上进行。

相关文章
相关标签/搜索