分布式搜索引擎架构怎么设计为啥笔记.pdfVIP

分布式搜索引擎架构怎么设计为啥笔记.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

1、面试题

es的分布式架构原理能说一下么(es是如何实现分布式的啊)?

2、面试官心里分析

在搜索这块,lucene是最流行的搜索库。几年前业内一般都问,你了解lucene吗?你知道

倒排索引的原理吗?现在早已经out了,因为现在很多项目都是直接用基于lucene的分布

式搜索引擎——elasticsearch,简称为es。

而现在分布式搜索基本已经成为大部分互联网行业的java系统的标配,其中尤为流行的就

是es,前几年es没火的时候,大家一般用solr。但是这两年基本大部分企业和项目都开始

转向es了。

所以互联网面试,肯定会跟你聊聊分布式搜索引擎,也就一定会聊聊es,如果你确实不知

道,那你真的就out了。

如果面试官问你第一个问题,确实一般都会问你es的分布式架构设计能介绍一下么?就看

看你对分布式搜索引擎架构的一个基本理解。

3、额外的友情提示

同学啊,如果你看到这里发现自己对es一无所知,没事儿,保持淡定,暂停一下课程。然

后上百度搜一下es是啥?本机启动个es?然后写个es的helloworld感受一下?然后搜个帖

子把es常见的几个操作都执行一遍(聚合、常见搜索语法之类的)?ok了,1~2小时熟悉

足够了,回来吧,继续看我们的课程。

4、面试题剖析

elasticsearch设计的理念就是分布式搜索引擎,底层其实还是基于lucene的。

核心思想就是在多台机器上启动多个es进程实例,组成了一个es集群。

es中存储数据的基本单位是索引,比如说你现在要在es中存储一些订单数据,你就应该在

es中创建一个索引,order_idx,所有的订单数据就都写到这个索引里面去,一个索引差不

多就是相当于是mysql里的一张表。index-type-mapping-document-field。

index:mysql里的一张表

type:没法跟mysql里去对比,一个index里可以有多个type,每个type的字段都是差不多

的,但是有一些略微的差别。

好比说,有一个index,是订单index,里面专门是放订单数据的。就好比说你在mysql中建

表,有些订单是实物商品的订单,就好比说一件衣服,一双鞋子;有些订单是虚拟商品的订

单,就好比说游戏点卡,话费充值。就两种订单大部分字段是一样的,但是少部分字段可能

有略微的一些差别。

所以就会在订单index里,建两个type,一个是实物商品订单type,一个是虚拟商品订单type,

这两个type大部分字段是一样的,少部分字段是不一样的。

很多情况下,一个index里可能就一个type,但是确实如果说是一个index里有多个type的

情况,你可以认为index是一个类别的表,具体的每个type代表了具体的一个mysql中的表

每个type有一个mapping,如果你认为一个type是一个具体的一个表,index代表了多个type

的同属于的一个类型,mapping就是这个type的表结构定义,你在mysql中创建一个表,肯

定是要定义表结构的,里面有哪些字段,每个字段是什么类型。。。

mapping就代表了这个type的表结构的定义,定义了这个type中每个字段名称,字段是什

么类型的,然后还有这个字段的各种配置

实际上你往index里的一个type里面写的一条数据,叫做一条document,一条document

就代表了mysql中某个表里的一行给,每个document有多个field,每个field就代表了这个

document中的一个字段的值

接着你搞一个索引,这个索引可以拆分成多个shard,每个shard存储部分数据。

接着就是这个shard的数据实际是有多个备份,就是说每个shard都有一个primaryshard,

负责写入数据,但是还有几个replicashard。primaryshard写入数据之后,会将数据同步到

其他几个replicashard上去。

通过这个replica的方案,每个shard的数据都有多个备份,如果某个机器宕机了,没关系啊,

还有别的数据副本在别的机器上呢。高可用了吧。

es集群多个节点,会自动选举一个节点为master节点,这个master节点其实就是干一些管

理的工作的,比如维护索引元数据拉,负责切换primaryshard和

您可能关注的文档

文档评论(0)

kay5620 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8001056127000014

1亿VIP精品文档

相关文档