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:进程等待究竟是什么?如何解决子进程僵尸所带来的内存泄漏问题?

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

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

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

    2024年02月13日
    浏览(36)
  • 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日
    浏览(31)
  • 再谈StringBuilder为什么线程不安全以及带来的问题

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

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

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

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

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

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

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

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

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

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

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

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

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

    2024年04月11日
    浏览(51)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包