【ES三周年】通过Elasticsearch来搭建搜索引擎 即时
前言
众所周知,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是一个基于开源的可高扩展的分布式
全球今日讯!GMAIL客户端怎么设置
在确定SIM卡已经开通GPRS网络服务情况下有以下步骤:1、进入信息页面,选择邮箱,启动设置向导,选择IMAP4;2、输入Gmail用户名作为电子邮件地址;3、
中原银行兰考支行召开“三新”业务推动暨合规培训宣讲会-全球视讯
为进一步提升全员干事创业积极性和向心力,持续提振发展信心,抢抓发展机遇,不断加强合规教育力度,增强全员合规意识,全力推动支行“三新...
前沿资讯!2022年打春时间几点几分 什么时候打春
在二十四节气当中,第一个节气就是立春,那么到立春来临的时候,意味着春天即将开市,寒冷的冬天技术,那么这个时候天气就会慢慢的回暖,在早
泰山旅游_关于泰山旅游的基本详情介绍 天天百事通
1、泰山,又名岱山、岱宗、岱岳、东岳、泰岳,为五岳之一,位于山东省中部,绵亘于泰安、济南、淄博三市之间,总面积2 42万
交通部再次点名花小猪 这次是什么原因
如今网约车平台也是有着不少的,你最喜欢使用哪个平台打车呢?目前很多用户都会使用花小猪平台的,但如今交通部再次点名花小猪,引起不少用户
19时直播 ,男篮对阵上海首发阵容出炉,郭艾伦落选,黑马太惊喜
19时直播,男篮对阵上海首发阵容出炉,郭艾伦落选,黑马太惊喜,同曦,郭艾伦,张镇麟,中国男篮,上海男篮,男子篮球,中国篮球,国际篮球赛事,中国职
这些年轻人排队“提前还贷”,问题出在哪儿
随着楼市的变化,提前还贷的人越来越多,甚至为此排起了长队,不少年轻人也加入其中。选择提前还款当然是为了降息,但专家提醒,
视焦点讯!高中教师自我工作总结5篇
教育教学是我们教师工作的首要任务。“学海无涯,教无止境”,只有不断总结学习,才能维持教学的青春和活力。下面是小编为大家整理的高中教...
视觉色彩复原 万余盏灯点亮 北京站大气归来原貌重现
1959年9月15日,北京站建成通车,从破土动工到通车运营,仅用了7个月零20天,创造了中国建筑史上的奇迹。如今60余年
世界速讯:百度的定期理财产品有什么?安全吗?
百度的定期理财产品安全可靠吗?百度理财是百度旗下的互联网金融服务平台,于2013年上线持续稳定运营至今,旗下产品种类众多,可以满足不同投资
昆仑万维净利润下滑30%!蹭上chatGPT概念市值大涨120亿_天天短讯
文|金卫ChatGPT的火爆,让一些概念股迎来高光时刻。2月13日,昆仑万维一度大涨14 5%,股价创25元历史新高。截止2月14日收盘,昆仑万维报于24 7
马油的功效与作用-环球今头条
马油是一种取得日本保所许可的安全油,含有丰富的自然营养素、高度不饱和脂肪酸,及维他命E,使得马油可以渗入极微小的间隙中(强大的渗透性)。
极氪赴美IPO,依然难关重重|钛媒体焦点|今日观点
极氪上市的步伐又向前推进了一步。2月13日,极氪智能科技有限公司宣布完成7 5亿美元(约51亿元人民币)A
讲道德有品行心得体会范文
加强党员干部政治品质和道德品行教育,是新形势下党员干部的必修课。学习啦小编今天为你整理了讲道德有品行心得体会范文,希望对大家有帮助!讲
沪指微涨逼近3300点 北向资金净流入近6亿元 机构:后市投资节奏或先价值后成长
2月14日,A股市场震荡分化,三大股指涨跌不一。值得关注的是,北向资金净流入近6亿元。业内人士普遍认为,A股会延续震荡向上走势,投资节奏上
外媒:俄称摩尔多瓦“颠覆政权”指控毫无根据_环球最新
参考消息网2月14日报道据俄罗斯卫星社报道,俄罗斯外交部14日表示,俄罗斯不对摩尔多瓦的安全构成任何威胁,也不会试图破(@参考消息)
永顺泰(001338)2月14日主力资金净卖出504.00万元|当前观察
截至2023年2月14日收盘,永顺泰(001338)报收于20 48元,上涨0 94%,换手率21 26%,成交量26 67万手,成交额5 46亿元。
周黑鸭业绩大降超90%具体详细内容是什么
周黑鸭业绩大降超90%今天的热度非常高,现在也是在热搜榜上了,那么具体的周黑鸭业绩大降超90%是什么情况呢,大家可以一起
埇桥区筑牢燃气器具产品质量安全防线
本报讯近日,埇桥区市场监管局组织开展燃气器具产品专项整治行动,紧紧围绕严把市场准入、规范经营行为等工作重点,有效防范和化解安全风险。
同样是反腐大戏男主,为什么安欣比侯亮平更讨人喜欢
《狂飙》开播后,热度一路飙升,甚至剧播完了好一阵,热搜榜上还是会时不时出现。同时,不少观众会用它对比之前爆火的另一部反腐大戏《人民的名
每日观察!www js 10086 cn
身边很多朋友都遇到过开通手机业务无故扣费的问题,那么10086怎么查询开通了什么套餐呢?想知道就来看今天的视频吧。下载一
环球今日讯!江苏自贸区板块2月13日涨0.54%,苏州高新领涨,主力资金净流出818.87万元
2月13日江苏自贸区板块较上一交易日上涨0 54%,苏州高新领涨。当日上证指数报收于3284 16,上涨0 72%。深证成指报收于12113 61,上涨1 14%。江