前言
众所周知,Elasticsearch是一款基于Lucene库的开源的实时搜索和分析引擎,它不仅可以大规模的索引文档且允许外界能够搜索到这些文档,而且能够非常快速的对这些文档进行分析操作。尤其是在大数据领域里面的存储和搜索与分析的协作操作,而且Elasticsearch可以被Hadoop集成,虽然Elasticsearch是基于Lucene构建的,但是它的应用领域非常的宽泛,其他方向暂且不提,本文就来分享一下Elasticsearch的工作原理,以及通过Elasticsearch来搭建搜索引擎的大概流程。
什么是Elasticsearch?
Elasticsearch也简称为ES,其实就是一个实时搜索和分析引擎,它可以近乎实时的数据存储、检索与分析数据。ES是一个基于开源的可高扩展的分布式全文搜索引擎,它自身可扩展性非常好,可以扩展到能够处理PB级别的数据。ES是基于Lucene作为核心来实现所有搜索和索引的功能的,之所以这样做就是为了通过简单的RESTful API来隐藏Lucene的复杂性,进而让全文搜索成为一个简单的操作。
Lucene
在介绍Elasticsearch的工作原理之前,再来了解一下Lucene。Lucene也是一个开源的项目,它是由Doug Cutting开发基于Apache软件基金会4 jakarta项目组的一个子项目。Lucene是一个全文检索引擎工具包,它只是一个全文检索引擎的架构,主要提供完整的查询和搜索引擎,以及部分的文本分析引擎,但它不是一个完整的全文检索引擎。近几年非常的受欢迎,尤其是在Java信息检索程序库里的体现。Lucene与Elasticsearch的关系可以理解为:ElasticSearch是基于Lucene 做了进一步的封装和加强。
(相关资料图)
Elasticsearch的工作
上文介绍过Elasticsearch的核心是基于Lucene库,Lucene是一个基于Java 引擎用于优化文档存储的全文检索引擎工具包,它可以高效地实时搜索和分析与搜索项相匹配的文本项。选择使用Elasticsearch,不仅因为它提供的一个更为低层的Lucene引擎和简洁的REST API,而且非常好的可扩展性,以及支持插件和其他技术的集成。在使用Elasticsearch之前,需要搞懂它三个核心内容:索引、分片、类型。
1、索引(index)
在Elasticsearch中,一个索引表示一个拥有相似特征的文档集合。例如,可以由一个用户数据的索引构成,也可以由一个产品类目的索引,甚至还可以由一个订单信息的索引。一个索引是由一个名字来区分做标识(命名规则:必须都是小写英文字母),且需要对这个索引里面的文档进行搜索、索引、更新等操作的时候,都是根据该名字来进行操作的。
注意:在一个集群中,使用者可以创建任意的多个索引。
2、分片(shard)
分片,其实就是一个索引可以存储超过单个节点硬件限制的大量数据。例如,在一个拥有100亿文档的索引占了10TB的磁盘空间,而且任何一个节点可能没有这么大的磁盘空间来存储或单个节点处理搜索请求而响应太慢,通过使用Elasticsearch将索引划分为多片,这些片就叫做分片。当创建一个索引的时候,使用者可以指定想要的分片数量,每个分片本身就是一个功能完整并且独立的索引,而且该索引可以被放到集群中的任意节点上面。
3、类型(type)
类型其实就是在一个索引中,使用者可以定义的一种或者多种类型,一个类型是索引的一个逻辑分区或者分类,它的语义完全由使用者决定,一般会给具有一组相同字段的文档定义为一个类型。比如,运营一个技术博客社区,且将所有博客数据存储在一个索引里面,在这个索引中,可以为博客用户数据定义一个类型,再为博客数据定义另外一个类型,而且也可以为文章评论数据定义第三个类型,这些操作都是可以正常操作的。
示例
这里通过一个简单的例子来做Elasticsearch的使用介绍,上面介绍过Elasticsearch提供了一个非常简洁的REST API,使用者可以把文档写进Elasticsearch里面,它会自动构建索引,然后可以使用查询语句把这些文档返回。Elasticsearch其实也提供了SQL查询功能,但是局限性比较大,所以复杂的查询聚合必须要回到DSL中,但是DSL语法比较复杂,如下所示:
GET /_search{"query": {"bool": {"must" [{"match": { "title": "Search"}},{"match": { "content": "Elasticsearch"}},]}}}
再来做一个复杂一点的查询结果演示,具体如下所示:
GET /_search{"_shard": {"success": 4,"total":5,"failed":1},"query": {"bool": {"must" : [{"match": { "title": "Search"}},{"match": { "content": "Elasticsearch"}},],"filter" : [{"team": { "status": "publish"}},{"range": { "publish_time": {"gt" : "2023-02-14"}}},]}}}
上面的查询结果示例还是较为简单的,在实际开发中还有更复杂的查询,尤其是数据嵌套多层,这里就不在做结果演示了。因为还有好多本文没有介绍到,或者使用者还没有使用到的搜索技术,可以去Elasticsearch的官方文档中查找即可,这里就不再一一赘述。
Tips
1、其实,Elastic官方有很多优质的博文,但是大部分开发者因为它们是英文的原因而忽略了,其实不能这样做,因为Elastic官方的这些文章有很多关键的实现过程以及原理,图文并茂,虽然是英文但是认真去读会发现写的很棒,所以作为使用者一定要克服英文的障碍去认真阅读这些文章。
2、还有就是,腾讯云提供的Elasticsearch Service云产品非常的不错,它是基于开源引擎打造的云端全托管 ELK 服务,集成 X-Pack 特性、独有高性能自研内核、QQ 分词、集群巡检、一键升级等优势能力,引入极致性价比的腾讯自研星星海服务器,可以帮助用户轻松管理和运维集群,高效构建日志分析、运维监控、信息检索、数据分析等业务。所以腾讯云的Elasticsearch Service很值得去体验、学习和使用。
3、Elasticsearch其实也是基于其他产品来研发的,借鉴了很多比较好的设计思想,也集成了很多算法设计,虽然官方的文档在技术原理方面讨论的不太深,基本都是点到为止,但是使用者要想深入了解和学习,必须通过其他途径去深入。
拓展:Hadoop集成
最后再来了解一下Hadoop集成的好处,Hadoop集成最大的好处就是Elasticsearch通过构建Elasticsearch-Hadoop让数据存储以及查询变得很简单,主要就是通过映射Hadoop分离的输入数据,Spark的分区到ES的分片上解决分布式数据模型的问题,因为可以减少数据拷贝操作,大大提高性能,而且数据能够在同一台机器上,那是因为Elasticsearch-Hadoop让与Hadoop和Spark进行数据交互操作,这样防止了不必要的数据通过网络进行传输操作。
附录
Elasticsearch官网:https://www.elastic.co/cn/downloads/elasticsearch
最后
通过本文关于使用Elasticsearch来搭建搜索引擎的简单介绍,想必读者会有所收获,Elasticsearch 自从诞生以来,它应用的地方越来越广泛,特别是在大数据领域,功能也越来越强大,而且Elasticsearch成名很早,技术栈功能特点也很多,现在也很完善,基本上各种学习资料都有,但是要想系统学习就要多去实践操作,因为只停留在理论上只能是纸上谈兵,所以要借助理论知识培养系统思想,结合实际实践来提高实践能力,双管齐下才能真正掌握Elasticsearch的使用。由于现在越来越多的实际场景应用了Elasticsearch ,而且呈现剧增的趋势,Elasticsearch会越来越受欢迎,让我们一起期待Elasticsearch带来的新技术变革!
-
【ES三周年】通过Elasticsearch来搭建搜索引擎-世界报资讯Elasticsearch也简称为ES,其实就是一个实时搜索和分析引擎,它可以近乎实时的数据存储、检索与分析数据。ES是一个基于开源的可高扩展的分布式
-
天天讯息:bitsnoop 关闭_bitsnoop1、被马勒戈壁的河蟹毒材症腐给封了。本文就为大家分享到这里,希望小伙伴们会喜欢。
-
户口怎么迁回原籍_离婚后户口怎么迁回原籍1、随着城市化的逐步发展,越来越多的农民把户口迁到了城市,他们享受不到农村应该有的政策,所以很多人想搬回原籍。农村户口迁
-
焦点速读:第三套上市标准被“激活” 创业板向未盈利企业敞开大门2月17日,全面实行股票发行注册制相关制度规则发布实施。其中,创业板第三套上市财务标准——“预计市值不低于50亿元,且最近一年营业收入...
-
宣扬“功利性内容”讲师承认被停课 大肆宣扬金钱就是一切!宣扬“功利性内容”讲师承认被停课大肆宣扬金钱就是一切!今天的关注度非常高,直接上了热搜榜,那么具体的是什么情况呢,大家
-
山东玻纤:拟将贵金属铑粉进行出售山东玻纤(SH605006,收盘价:9 12元)2月19日晚间发布公告称,为盘活存量资产,进一步提高资产运营质量,公司拟将贵金属铑粉进行出售。同时授权
-
要大力推进什么联合执法_大力是什么字夯1、夯[hāng][bèn][字义]:[hāng]1 砸地基用的工具:木~。2、蛤蟆~。3、打~。4、2 用
-
看点:德甲-乌帕梅卡诺染红霍夫曼传射 10人拜仁2-3负门兴北京时间2月18日,德甲联赛第21轮打响,拜仁客场挑战门兴,第8分钟,乌帕梅卡诺直红离场,第13分钟,施廷德尔低射为门兴首开记录,第35分钟,
-
匠心韶华·理查的诗——瓦格纳与理查·施特劳斯|世界头条推荐理由:德国音乐巨匠——理查·瓦格纳与理查·施特劳斯自作曲生涯之初便备受争议,毁誉并存,同时拥有极高的声望。复杂的和声、辉煌的声...
-
【全球新视野】pdf转excel_pdf转excel怎么样格式不乱1、在PDF文档中点击导出PDF到Excel,然后根据提示保存文档,点击开始转换。具体操作如下:2、单击文件选项。3、单
-
如何移植风信子球茎如何移植风信子球茎你需要的东西剪铲叉镘堆肥球茎肥覆盖物春天开花的风信子从地下球茎结构中生长出来。鳞茎通过在当年的开花和落
-
李彦宏、马化腾、雷军、程维等出席中国互联网协会新春茶话会-世界观察中国互联网协会官微消息,2月17日,2023中国互联网发展座谈会暨中国互联网协会新春茶话会在京召开。工业和信息化部党组成
-
今日要闻!马路上新能源汽车越来越多,燃油车会被淘汰吗?燃油车还能买吗?Taycan最低售价:89 80万起图片参数配置询底价懂车分4 31懂车实测空间·性能等车友圈5 5万车友热议二手车69 80万起|96辆随着新能源汽车的逐
-
澳超前瞻:布里斯班狮吼防守不佳 悉尼FC能否借势取分 微资讯北京时间2月18日4:00,澳超第17轮,悉尼FC将在主场迎战布里斯班狮吼。
-
手机里尽量不要安装这些软件,不然会越来越卡!大多数人当新机到手后一般都会下载安装各种软件,但并不是所有软件都可以随便安装的,到底有哪些软件不能安装呢?今天我们就来简单聊一聊!手
-
如何购买制作巧克力糖用的蜡您可以在大多数超市购买用于制作糖果的蜡。许多使用巧克力涂层的旧糖果食谱通常会指导读者在融化巧克力以涂上自制糖果时添加石蜡
-
环球速递!三首蛟龙_三首蛟1、根据电视剧《宝莲灯前传》,三首神蛟本是盘旋凌霄宝殿的镇殿神柱,是被禁锢上万年的欲。2、因为三首神蛟动了欲念,偷了镇
-
天天热消息:“稳增长20条”真“湘”丨全力帮扶实体经济湖南“稳增长20条”围绕全力帮扶实体经济,提出了加大金融支持力度,加大财税支持力度,助力企业稳岗拓岗,加强用能和物流保障
-
洛阳成都两地工会“牵手” 推进全面交流协作工人日报-中工网记者余嘉熙通讯员张宝权2月16日,河南省洛阳市总工会、四川省成都市总工会相聚洛阳,签订两市工会战略合作协议,就产业工人队
-
每日聚焦:洛克王国宠物_洛克王国博得1、洛克王国博得的请求,搜集南瓜变身魔法材料。2、万圣节就要到了,可是博得材料屋却没有准备足够的万圣节变身魔法材料。3、
-
粤海置地(00124.HK)2月17日收盘平盘|全球热闻截至2023年2月17日收盘,粤海置地(00124 HK)报收于0 76港元,上涨0 0%,换手率0 0%,成交量2 8万股,成交额2 1万港元。
-
天天微头条丨小米全新旗舰智能门锁来了:集成猫眼和屏幕下周一(2月20日),小米将会带来一款全新的小米智能门锁M20系列新品,号称“智能守护看得见”。从预热海报来看,新款门锁
-
明清笑话集6种_对于明清笑话集6种简单介绍1、《明清笑话集6种》各专集所收笑话,有部分内容相同而文字有异者,为保存各专集的完整性,并显示其传布之迹,不予删削,仍予
-
每日观点:中信证券:定点药店纳入门诊统筹 政策利好龙头药店零售药店上市公司门店快速扩张,处方外流扩大发展空间
-
一声二声三声四声符号_汽车鸣笛一声两声三声是什么意思1、汽车鸣笛,二声三声的含义:1。2、汽车鸣笛表示感谢。3、当许多汽车行驶到一条狭窄的道路时,另一辆汽车会倒车并让路,以
-
药康生物:参股公司引入苏州济康及苏州国发5000万元增资,加快推进疾病动物模型研发进度和产业化进程药康生物9月27日公告,参股公司江西中洪博元生物技术有限公司(以下简称“江西中洪”)拟增加注册资本人民币55238万元
-
焦点信息:只有心境简单了,才能有心思经营生活别活的太复杂,累了就睡,开心就笑,不自卑也不炫耀,不动声色的变好。105354606105359371105353692别否定自己,你特别好,特别棒,特别值得,
-
商务部:欢迎包括美国企业在内的各国企业在华投资兴业,共享发展红利证券时报网讯,针对“部分外媒报道拜登政府将禁止美国企业对一些中国公司进行投资”的问题,商务部新闻发言人束珏婷2月16日在例行新闻发布...
-
ChatGPT热度再升级,AIGC的投资人开始关注“文生图”了|每日观点AIGC是一场老互联网人的豪赌,一次美元基金的狂欢,一个时代的进击。@数科星球原创作者丨科科编辑丨十里香在2023年的第一季度,ChatGPT以“狂
-
易极:导致你交易亏损的五大心魔交易者最大的对手并不是市场,也不是瞬息万变的行情走势,而是我们自己。所以今天我就结合自己的交易经验,讲解我们交易历程中,五个最难克服