ES能为你解决什么问题,又会带来什么问题?

这篇具有很好参考价值的文章主要介绍了ES能为你解决什么问题,又会带来什么问题?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

S主要运用于全文搜索、数据分析, 底层使用开源库Lucene,拥有丰富的REST API。内部分布式的数据存储、倒排索引等设计,使其可以快速存储、搜索、分析海量数据。典型的使用方和应用场景,如github,StackOverflow,elasticsearch+logstash+kibana 一体化的日志分析。

ES 搜索为什么快的原因

ES能为你解决什么问题,又会带来什么问题?,程序员,elasticsearch,大数据,搜索引擎

对于mysql中如上的数据表,ES会对每个字段的值建立索引,通过索引的值去找数据,而且这些索引都是在内存里面的。

name段索引:

ES能为你解决什么问题,又会带来什么问题?,程序员,elasticsearch,大数据,搜索引擎

age字段索引

ES能为你解决什么问题,又会带来什么问题?,程序员,elasticsearch,大数据,搜索引擎

address 字段索引

ES能为你解决什么问题,又会带来什么问题?,程序员,elasticsearch,大数据,搜索引擎

这样,当我们要找上海市,年龄为21岁的数据就能够通过address,age索引快递定位到数据id=2的是我们需要查找的。

然后在从磁盘中把数据id=2的数据读取出来。

上面的其实就是ES中倒排索引的一个简化版本。

实际上的ES的倒排序使用的是前缀作为索引,同时会使用FST对索引数据进行压缩,以保证在内存的数据量不会因为索引多而带来比较大的内存消耗。

ES能为你解决什么问题,又会带来什么问题?,程序员,elasticsearch,大数据,搜索引擎

对于上面的数据表,如果采用HashMap的方式对name字段索引的话,索引所占用内存20个字节。

ES能为你解决什么问题,又会带来什么问题?,程序员,elasticsearch,大数据,搜索引擎

但是如果转换成FST结构的话,可以用四个字节表示name,总共占用内存为4+4*3=16。(假设数据范围只有M,i,e,c) 四个字符。

ES能为你解决什么问题,又会带来什么问题?,程序员,elasticsearch,大数据,搜索引擎

ES 分布式数据结构设计
  • 数据分片均衡

分片是 Elasticsearch 在集群中分发数据的关键。文档存储在分片中,然后分片分配到集群中的节点上。当集群扩容或缩小,Elasticsearch 将会自动在节点间迁移分片,以使集群保持平衡。

  • 数据可靠

分片有主分片,复制分片。复制分片只是主分片的一个副本,它可以防止硬件故障导致的数据丢失,同时可以提供读请求,比如搜索或者从别的 shard 取回文档

每个主分片都有一个或多个副本分片,当主分片异常时,副本可以提供数据的查询等操作。主分片和对应的副本分片是不会在同一个节点上的 。

  • 分布式搜索

分片本身就是一个完整的搜索引擎,它可以使用单一节点的所有资源。主分片或者复制分片都可以处理读请求——搜索或文档检索,所以数据的冗余越多,能处理的搜索吞吐量就越大

ES 集群中每个节点通过路由都知道集群中的文档的存放位置,所以每个节点都有处理读写请求的能力。

在一个写请求被发送到某个节点后,该节点即为协调节点,协调节点会根据路由公式计算出需要写到哪个分片上,再将请求转发到该分片的主分片节点上。如果是查询操作,则协调节点会将请求分发到其他分片上,其他分片查询结果之后再由协调节点将数据组装返回。

所以,引入ES,能够实现帮你解决数据量多,分布式查询问题。同时ES会自动的替你对所有字段建立索引,以实现高性能的复杂聚合查询,因此只要是存入ES的数据,无论再复杂的聚合查询也可以得到不错的性能,而且你再也不用为如何建立各种复杂索引而头痛了。另外,ES支持多种分词器,对全文搜索支持更加高效。

ES引入会有什么样的问题
  • 字段类型无法修改、写入性能较低和高硬件资源消耗
    ES需要在创建字段前要预先建立Mapping,Mapping中包含每个字段的类型信息,ES需要根据Mapping为字段建立合适的索引。由于这个Mapping的存在,ES中的字段一但建立就不能再修改类型了。ES在数据结构灵活度上高于MySQL但远不如MongoDB

  • 不支持事务,JOIN

  • 吃硬件

ES的排序和聚合(Aggregation)操作会把几乎所有相关不相关的文档都加载到内存中,一个Query就可以很神奇地吃光所有内存,现在新的Lucene版本优化了基于硬盘的排序,但也仅当你使用SSD的情况下,才不会牺牲过多的搜索性能。其他的问题还包括,大量的增量写操作会导致大量的后台Merge,CPU和硬盘读写都会很容易达到瓶颈。ES确实在横向Scale方面做的很出色,但前提是有足够的预算买硬件。

  • 数据实时性
    每当有新增的数据时,就将其先写入到内存中,在内存和磁盘之间是文件系统缓存,当达到默认的时间(1秒钟)或者内存的数据达到一定量时,会触发一次刷新(Refresh),将内存中的数据生成到一个新的段上并缓存到文件缓存系统 上,稍后再被刷新到磁盘中并生成提交点。因此,从Index请求到对外可见能够被搜到,最少要1秒钟的数据延时。

  • 不支持数据的权限管理

总结

ES香不香看你怎么用。有人用的很爽,有人用的很痛苦。用好了就少加班调索引,调sql。用不好就常加班调ES。

优点:
1.高并发
2.容错能力比mg强。比如1主多从,主片挂了从片会自动顶上
3.满足大数据下实时读写需求,无需分库(不存在库的概念)。
4.易扩展。分片数据自动均衡
5.支持较复杂的条件查询,group by、排序都不是问题
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

ES能为你解决什么问题,又会带来什么问题?,程序员,elasticsearch,大数据,搜索引擎

ES能为你解决什么问题,又会带来什么问题?,程序员,elasticsearch,大数据,搜索引擎

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

ES能为你解决什么问题,又会带来什么问题?,程序员,elasticsearch,大数据,搜索引擎

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(资料价值较高,非无偿)

ES能为你解决什么问题,又会带来什么问题?,程序员,elasticsearch,大数据,搜索引擎

最后

ES能为你解决什么问题,又会带来什么问题?,程序员,elasticsearch,大数据,搜索引擎

ES能为你解决什么问题,又会带来什么问题?,程序员,elasticsearch,大数据,搜索引擎

由于文档内容过多,为了避免影响到大家的阅读体验,在此只以截图展示部分内容,详细完整版的JavaScript面试题文档,或更多前端资料可以点此处即可获取!!!

影响到大家的阅读体验,在此只以截图展示部分内容,详细完整版的JavaScript面试题文档,或更多前端资料可以点此处即可获取!!!文章来源地址https://www.toymoban.com/news/detail-847331.html

到了这里,关于ES能为你解决什么问题,又会带来什么问题?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Linux:进程等待究竟是什么?如何解决子进程僵尸所带来的内存泄漏问题?

    Linux:进程等待究竟是什么?如何解决子进程僵尸所带来的内存泄漏问题?

     进程等待通常是指: 父进程通过wait()/waitpid()的方式,让父进程对子进程进行资源回收的等待过程!!  进程等待通常是为了解决以下两种情况: 解决子进程僵尸所带来的内存泄漏问题,对僵尸子进程进行资源回收! 原因在于当子进程僵尸后,便“刀枪不入”了。即使是

    2024年04月16日
    浏览(15)
  • 数据服务能为高校、科研院所解决哪些问题?

            我国是科研大国,具有规模庞大的科研人才队伍。随着科研实力的逐渐增强,高校需要对接新平台,获得更多研发资源,而科研信息数据量急剧增长,超过了科研人员所能够管理的范围,这就需要借助数据服务,解决这些问题。         借助数据服务无疑是高校发展

    2024年02月13日
    浏览(12)
  • ES 8.0:历时三年的 Elasticsearch 8.x 大更新给我们带来了什么?

    ES 8.0:历时三年的 Elasticsearch 8.x 大更新给我们带来了什么?

    历时48个月,Elastic终于迎来了 8.0 的大版本更新,可谓是千呼万唤始出来了! 在正式版发布之前,经历了两个内测版,一个公测版,两个RC版本 版本号 发布日期 多少个次要版本迭代 历时 8.0 2022年2月11日 ? 至今 7.0 2019年4月11日 17个次要版本 48个月 6.0 2017年11月15日 8个次要版

    2024年02月02日
    浏览(13)
  • 再谈StringBuilder为什么线程不安全以及带来的问题

    再谈StringBuilder为什么线程不安全以及带来的问题

    比较有意思的是,学习锁消除的过程中,有人讲到StringBuffer在方法内构建,不会被其他方法引用时,StringBuffer的锁会被消除, 于是,顺便看了一下同源的StringBuidler为什么线程不安全,以及为什么多线程不安全,和带来的问题, 有了这篇文章,分享出来,帮助读者轻松应对知

    2024年02月11日
    浏览(12)
  • AICore 带来了 Android 专属的 AI 能力,它要解决什么?采用什么架构思路?

    AICore 带来了 Android 专属的 AI 能力,它要解决什么?采用什么架构思路?

    Google 最近发布的 Gemini 模型在全球引起了巨大反响,其在 多模态 领域的 Video demo 无比震撼。对于 Android 开发者而言,其中最振奋人心的消息莫过于 Gemini Nano 模型将内置到 Android 系统当中,并开放给开发者使用。 事实上,能够自研 LLM 大模型的企业屈指可数,大多数的企业或

    2024年02月04日
    浏览(9)
  • flutter 简介 flutter 能为我们做什么

    flutter 简介 flutter 能为我们做什么

    陆陆续续已经写了60多篇的flutter 的文章了,本篇文章就来说说我对flutter 的简单看法 Flutter是一种由谷歌开发的开源用户界面(UI)工具包,用于在多个平台上构建高性能、美观和流畅的移动应用程序。它使用Dart编程语言,并提供丰富的UI组件和工具,可以快速构建现代化的应

    2024年02月16日
    浏览(7)
  • 什么是浏览器同源策略?如何处理同源策略带来的跨域问题?

    浏览器的同源策略(Same-Origin Policy)是一种安全机制,用于限制一个网页文档或脚本如何与来自不同源的资源进行交互。同源是指两个 URL 的协议、主机和端口号都相同。 同源策略的目的是保护用户的隐私和安全。它可以防止恶意网站通过脚本访问其他网站的敏感信息或进行

    2024年02月16日
    浏览(13)
  • ChatGPT⼊门到精通(2):ChatGPT 能为我们做什么

    ChatGPT⼊门到精通(2):ChatGPT 能为我们做什么

    有了ChatGPT后,就好⽐你有了好⼏个帮你免费打⼯的「⼩弟」,他们可以帮你做很多 ⼯作。我简单总结⼀些我⽬前使⽤过的⽐较好的基于ChatGPT的服务和应⽤。 1、总结、分析 当我们在阅读⼀些⽂章和新闻的时候,有的⽂章写的过于繁杂或者领域不是很熟悉,可以 让ChatGPT充当

    2024年02月11日
    浏览(10)
  • 代码自动生成,给程序员带来的是“春天”还是“寒冬”?

    代码自动生成,给程序员带来的是“春天”还是“寒冬”?

    CodeGeeX 受邀参与由AI大模型领域的青年中坚力量组织的思辨活动。在计算机编程领域,基于大模型能力的代码生成工具,探讨给程序员带来的各种机会与挑战。近期 CodeGeeX 2.0大版本上线,用对话的方式直接操作代码!开发提效,推荐体验! 思辨活动背景: AI技术的飞速发展对

    2024年02月08日
    浏览(10)
  • WPS解决插入公式在正文带来行间距变大问题

    WPS解决插入公式在正文带来行间距变大问题

    写论文解释公式时,插入对应的变量,导致行间距变大,如图   显然上文与下文行间距不等。但无法通过修改数值修改下文行间距。

    2024年04月11日
    浏览(16)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包