阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

ElasticSearch的工作机制

109次阅读
没有评论

共计 1479 个字符,预计需要花费 4 分钟才能阅读完成。

ElasticSearch,和 Solr 一样,是底层基于 Apache Lucene,且具备高可靠性的企业级搜索引擎。

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

具体对应关系见下表。

ElasticSearch 的工作机制

ElasticSearch 中的 Replica 是副本的意思,创建副本的好处有两个,1,可以分流部分查询请求,2,如果集群中的某个分片丢失了,就可以使用这个副本将数据全部找回来,因为这个原因,副本分片和源分片不会放在同一节点上。ES 中每一个索引都可以被分成多个分片,但不一定每个分片都有副本,但是一旦创建了副本,就会有主分片的说法(作为复制源的分片),分片和副本的数量可以在索引创建的时候指定。下图是副本和分片的示意图,分片和它的副本不会在同一个节点上。

ElasticSearch 的工作机制

在索引创建之后,你可以在任何时候动态地改变副本的数量,但是你事后不能改变分片的数量。默认情况下,Elasticsearch 中的每个索引被分片 5 个主分片和 1 套副本,这意味着,如果你的集群中至少有两个节点,你的索引将会有 5 个主分片和另外 5 个副本,这样的话每个索引总共就有 10 个分片。

当 ES 的一个节点启动后,它会通过广播方式找到集群中的其他节点,并且建立连接。

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

主节点读取集群信息,在读取过程中,它会检测分片的情况,哪些分片是主分片,并且是可用的,在这一步之后,所有的分片已经准备好了,而副本还没有。下一步的操作就是找到那些已经被复制过的分片,将他们作为副本。如果一切顺利,那么 ES 启动成功了,所有的分片和副本都已经准备好了。

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

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

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

Vagrant 和 Docker:如何在 OS X 上安装和设置 Postgres, Elasticsearch 和 Redis  http://www.linuxidc.com/Linux/2014-09/106898.htm

分布式搜索 ElasticSearch 单机与服务器环境搭建  http://www.linuxidc.com/Linux/2012-05/60787.htm

ElasticSearch 的详细介绍 :请点这里
ElasticSearch 的下载地址 :请点这里

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-20发表,共计1479字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中