分布式搜索引擎es 面试突击

这篇具有很好参考价值的文章主要介绍了分布式搜索引擎es 面试突击。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

es elastocsearch

倒排索引是在数据查询之前建立,在查询的时候可以直接通过关键词定位到文档内容。用空间换时间

分布式架构原理说一下?

es底层是基于lucene来的   大概就是一个用于全文检索的jar包

用es来做分布式的搜索引擎  可以承载一秒钟几千的搜索

es用来存储数据的基本单位是索引。

index:mysql里的一张表

type:一个index里可以有多个type,每个type的字段都是差不多的,但是有一些略微的差别

比如mysql中的表  有些订单是实物订单,有些是游戏点卡。两种订单大部分字段一样,但是少部分字段可能有略微的差别。

mapping代表了对这个type表结构的定义,定义了这个type中每个字段名称,字段是什么类型,然后还有这个字段的各种配置

document:往index里的一个type里面写一条数据,叫做一条document,一条document代表了mysql中某个表的一行,每个document有多个field,每个field就代表了document中一个字段的值

架构:

每台机器中有一个es进程,每个es进程中有多个shard,每个shard都会在其他的某个机器上有一个副本   一个索引的数据会被分布式存储在多个shard上面    primary为主版本,replica为副版本

如果说masterNode节点(代表一个机器)突然挂了,那么es会重新选举一个新的节点成为masterNode     原本需要的不是shard01跟shard02么  此时新的masterNode里面是02跟03,02是replica Shard  此时会将它变成primary Shard   

kafka是只能在lead里面读写   而es是可以在primary里面写读写  可以在replica里面读

当刚刚宕机了的节点恢复后,它里面的shard02会变成replica shard

写入与查询的工作原理?

客户端可以挑任意一个进程去写,进去以后  如果是找到了replica节点,那么replica会把数据路由到primary中,写进primary,然后primary会将数据同步到replica中

写进shard怎么写的?

在写进shard之后  会写进内存buffer中,同时会写进tanslog日志中,每隔一段时间会把buffer中的数据刷进磁盘,refresh操作->刷到segmentFile中,segmentfile 中就存储最近1秒内buffer中写入的数据  刷到segmentfile之前会先进os cache操作系统级别的一个内存缓存中 为什么说es是准实时的,因为是每隔1秒refresh一次,写入的数据1秒后才能被看到

这样一直重复,新的数据不断进入buffer和translog中,不断将buffer数据写入一个又一个新的segment file中去,每次refresh完buffer清空,tanslog保留,随着过程推进,translog会变得越来越大,当translog达到一定长度的时候,就会触发conmit操作

commit操作:1写comimit point  2 OS cache数据fsync强刷到磁盘上去 3.清空translog日志文件

一般不叫commit  一般叫flash操作

translog主要是用来做数据的恢复  内存如果宕机 那么就可以根据translog来做一个恢复

1.他是准实时的,数据写入一秒后可以搜索到,2可能会丢失数据的,你的数据有5秒的时间停留在buffer、translog、segment file  os cache中  

此时如果宕机  可能会导致五秒的数据丢失

如果你希望一定不丢数据的话 ,可以设置参数,每次写入一条数据,都是直接写入buffer,同时写入磁盘中的translog

删除数据:有个.del的文件  如果某条数据被删除了,.del文件中会标记这条数据。然后你就不会搜索到这条数据了

merge操作:三个segment合并成一个segment,如果原来的segment中某条数据被标志成.del  那么在合并后  它就没了  被物理删除了

读数据过程:不断轮询 每次随机找一个shard去读,

在几十亿数量级场景下如何优化查询性能?

仅仅只是写入es中要用来检索的少数几个字段就可以了 , fileSystemcache里面的内存要大一点

你最好写入es的数据小于等于 fileSystem cache   最好让查询大量的命中filesystemcache

数据预热:经常要访问的数据 把他刷到filesystemCache中  就是从内存拿  而不是磁盘

比如电商 你可以吧一些平时查看得比较多的商品,热数据提前后台搞个程序,每隔一分钟,自己主动访问一次,刷到filesystemCache中去

冷热分离:  就是经常用的数据放在一张表里面,不经常用的放在另一个shard里面

用es做分页,越往后翻越慢

两个思路来解决:

1.不允许深度分页

2.默认翻得越深,性能越差

微博:可以用scroll  api

其实现在很多产品是不能随意翻页的   做成的是往下拉的这种  而不是说一下从一百页跳到200页

生产环境的分布式搜索引擎是怎么部署的?

中小型公司:

分布式搜索引擎es 面试突击

 

集群部署了5台机器,每台机器是6核64G的,集群总内存是320G

日增量数据大概是2000万条,每天日常增量数据大概是500MB,每月文章来源地址https://www.toymoban.com/news/detail-462499.html

到了这里,关于分布式搜索引擎es 面试突击的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 搜索引擎ElasticSearch分布式搜索和分析引擎学习,SpringBoot整合ES个人心得

    Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。Elasticsearch用于云计算中,能够达到实时搜索,稳定,可靠,

    2024年02月04日
    浏览(63)
  • elasticsearch(ES)分布式搜索引擎03——(RestClient查询文档,ES旅游案例实战)

    文档的查询同样适用昨天学习的 RestHighLevelClient对象,基本步骤包括: 1)准备Request对象 2)准备请求参数 3)发起请求 4)解析响应 我们以match_all查询为例 3.1.1.发起查询请求 代码解读: 第一步,创建 SearchRequest 对象,指定索引库名 第二步,利用 request.source() 构建DSL,DSL中可

    2024年02月07日
    浏览(46)
  • elasticsearch(ES)分布式搜索引擎04——(数据聚合,自动补全,数据同步,ES集群)

    **聚合(aggregations)**可以让我们极其方便的实现对数据的统计、分析、运算。例如: 什么品牌的手机最受欢迎? 这些手机的平均价格、最高价格、最低价格? 这些手机每月的销售情况如何? 实现这些统计功能的比数据库的sql要方便的多,而且查询速度非常快,可以实现近

    2024年02月08日
    浏览(43)
  • SpringCloud分布式搜索引擎、数据聚合、ES和MQ的结合使用、ES集群的问题

    目录 数据聚合 聚合的分类 ​编辑 DSL实现Bucket聚合 ​编辑  DSL实现Metrics聚合​编辑 RestAPI实现聚合  对接前端接口​编辑  自定义分词器​编辑 Completion suggester查询 Completion suggester查询 酒店数据自动补全 实现酒店搜索框界面输入框的自动补全  数据同步问题分析​编辑 同

    2024年02月16日
    浏览(46)
  • 项目1在线交流平台-6.Elasticsearch分布式搜索引擎-3.ES结合Kafka应用-开发社区搜索功能

    参考牛客网高级项目教程 狂神说Elasticsearch教程笔记 尚硅谷Elasticsearch教程笔记 1.在业务层处理好搜索帖子的服务 包括保存帖子到ES服务器 从服务器中删除帖子 从服务器中查询帖子 2.发布事件 在controller层,结合kafka,发布帖子、增加评论时,数据放入消息队列 异步消费消息

    2024年02月02日
    浏览(49)
  • elasticsearch(ES)分布式搜索引擎01——(初识ES,索引库操作和文档操作,RestClient操作索引库和文档)

    1.1.1.elasticsearch的作用 elasticsearch是一款非常强大的开源搜索引擎,具备非常多强大功能,可以帮助我们从海量数据中快速找到需要的内容 1.1.2.ELK技术栈 elasticsearch结合kibana、Logstash、Beats,也就是elastic stack(ELK)。被广泛应用在日志数据分析、实时监控等领域: 而elasticsearc

    2024年02月07日
    浏览(52)
  • 第七章-分布式搜索引擎-ES:全文查询、分词查询、精确查询、地理坐标查询、组合查询(bool、funtion_score)以及RestApi

    DSL查询分类 全文查询、分词查询、非分词查询、地理坐标查询、组合查询 match_all 查询所有,不需要查询条件,固定写法_search 第一个hits就是命中的数据 ,total就是条数,第二个hits是source嘞   全文检索查询 我们不要整多个字段查询,参与的字段越多,查询速度越慢,如果有

    2024年01月16日
    浏览(68)
  • 分布式搜索引擎

    elasticsearch的查询依然是基于JSON风格的DSL来实现的。 Elasticsearch提供了基于JSON的DSL(Domain Specific Language)来定义查询。常见的查询类型包括: 查询所有 :查询出所有数据,一般测试用。例如:match_all 全文检索(full text)查询 :利用分词器对用户输入内容分词,然后去倒排索

    2024年02月10日
    浏览(33)
  • 分布式搜索引擎——elasticsearch搜索功能

    Elasticsearch提供了基于JSON的DSL (Domain Specific Language)来定义查询。常见的查询类型包括: 查询所有:查询出所有数据,一般测试用。例如:match_all 全文检索(full text)查询:利用分词器对用户输入内容分词,然后去倒排索引库中匹配。例如: match_query multi_match_query 精确查询:根据精确词条

    2024年02月05日
    浏览(59)
  • 分布式搜索引擎ElasticSearch——搜索功能

    DSL查询分类 DSL官方文档 全文检索查询 精确查询 地理查询 复合查询 Function Score Query function score query Boolean Query 排序 分页 官方文档 高亮 快速入门 match,term,range,bool查询 排序和分页 高亮显示 就是在前面抽取的解析代码中进一步添加关于高亮的解析部分,因为highlight和so

    2024年02月01日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包