您的位置: 首页> 业界 > 正文

【ES三周年】通过Elasticsearch来搭建搜索引擎

2023-02-17 08:09:52 来源:腾讯云

前言

众所周知,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带来的新技术变革!

关键词: Elasticsearch Service ElasticsearchService Lucene/Solr Hadoop

资讯
业界
企业
骑闻
产品
“雪糕刺客高温下不融化”引来网友热议 增稠剂过量的雪糕你还敢吃吗
前有雪糕界内卷冲上热搜,后有钟薛高高温下不融化引发热议。这几天,关于雪糕的话题火了。有网友称,在室温31℃左右放置1小时后,钟薛高海
2022-07-05
唐山曹妃甸推动京津冀协同发展 产业协同转移全面提速
春暖渤海湾,书写新画卷。位于唐山曹妃甸的金隅天坛(唐山)木业科技有限公司的生产车间内一片繁忙景象——铺装、压机、翻板等工作正紧张有序
2022-03-19
石家庄海关共签发RCEP原产地证书864份 货值3.9亿元
自今年1月1日RCEP(《区域全面经济伙伴关系协定》)正式实施以来,截至3月14日,石家庄海关共签发RCEP原产地证书864份,货值3 9亿元。据介绍
2022-03-19
蚌埠海关累计签发RCEP原产地证书35份 涉及金额2583.09万元
在蚌埠海关报关大厅原产地证办理窗口,海关关员仔细核对着递交过来的材料。十分钟后,一份RCEP原产地证书打印盖章后交到了企业业务员手中。
2022-03-19
昆明西山区:“双招双引”推动人才链和产业链融合发展
为激励党员干部在营商环境建设中担当作为,昆明市西山区深入实施人才强区战略和人才领跑工程,建立健全招商引资和招才引资并轨新模式,以产
2022-03-19
绥化望奎以工业化思维为引领 推动肉类加工制造产业腾飞
望奎县以工业化思维为引领,推动全县以生猪为主的肉类加工制造产业一年全面开局、三年基本成势、五年产业腾飞,聚焦五化做强做优肉类加工制
2022-03-19
【ES三周年】通过Elasticsearch来搭建搜索引擎
Elasticsearch也简称为ES,其实就是一个实时搜索和分析引擎,它可以近乎实时的数据存储、检索与分析数据。ES是一个基于开源的可高扩展的分布式
2023-02-17
即时:雅儿贝德为什么背叛安兹_雅儿贝德为什么背叛
1、在《overlordⅡ》第十话的结尾,我们看到雅儿贝德竟然一反常态,竟然对安兹嗤之以鼻,用嘲讽的话语说出了句「真无
2023-02-17
全球观速讯丨十部让你看了羞羞脸的韩国电影,少儿不宜
韩国电影的包容程度相对于我们大中华来说,还是比较开放一点!所以在这个开放尺度有限的空间内,小编为大家列举了十部比较有代表性的电影,供
2023-02-16
孕期适宜吃什么_孕期食谱吃什么好
1、孕妇孕期的饮食主要是品种丰富,营养全面。2、怀孕期间,要多吃富含蛋白质、维生素等微量元素的食物。3、各种蔬菜、水果、
2023-02-16
正式投用!可储存原油约425万吨
2月16日  我国一次性建设规模最大的  原油商业储备库项目  投油成功  标志着东营原油商业储备库项目  (下称“东营项目”)  正式
2023-02-16
动态焦点:花甲是多少岁_花甲之年是什么意思
古时候,无论是对于老人、幼儿、少女、少年,都有着一种特定的称呼。而对于老人,大致上有“古稀”“耄耋”“花甲”“期颐”一类
2023-02-16
沧州:8个重大科技专项项目确定 引领经济社会高质量发展
为充分发挥科技在经济社会高质量发展中的引领和支撑作用,沧州市确定8个项目为2021年全市重大科技专项项目。这8个重大科技专项项目分别为:
2022-03-19
  中新网海口1月23日电(王子谦 符宇群)海南省高级人民法院院长陈凤超23日说,2021年海南法院为自贸港建设提供坚强司法保障,全年有效管
2022-01-24
  新华社武汉1月23日电(记者王贤)随着春节假期临近,从广州、深圳等地返回湖北的旅客较多。为此,23日,武汉站、汉口站、襄阳东站、十堰
2022-01-24
  1月22日0—24时,广东省新增本土确诊病例3例和本土无症状感染者1例,均为珠海报告。23日,珠海市疫情防控新闻发布会上,珠海市政府副秘
2022-01-24
青海海西州德令哈市发生3.7级地震
  据中国地震台网正式测定,1月23日11时58分在青海海西州德令哈市发生3 7级地震,震源深度9千米,震中位于北纬38 40度,东经97 35度。
2022-01-24
  北京2022年冬奥会和冬残奥会颁奖花束已于近期完成交付。与传统的鲜切花不同,这些花束全部采用上海市非物质文化遗产“海派绒线编结技艺
2022-01-24
  中新网宿迁1月23日电 (刘林 张华东)核酸检测是当下及时发现潜在感染者、阻断疫情传播的有效方法。23日,记者从宿迁市宿豫区警方获悉
2022-01-24
  记者从天津市人社局获悉,从明天(24日)起,天津2022年度第一期积分落户申报工作正式开始,这是新修订的《天津市居住证管理办法》《天津
2022-01-24
  中新社北京1月23日电 (记者 刘亮)记者23日从中国海关总署获悉,2021年,中国海关组织开展“国门绿盾”专项行动,在寄递、旅客携带物
2022-01-24
  记者从天津市疫情防控指挥部获悉,天津疫情第341—360例阳性感染者基本信息公布。  目前,这20例阳性感染者已转运至市定点医院做进一
2022-01-24
“最美基层民警”武文斌:案子破了最管用
  中新网吕梁1月23日电 题:“最美基层民警”武文斌:案子破了最管用  作者 高瑞峰  同事称他为“拼命三郎”。从警14年,武文斌破
2022-01-24
  据“西安发布”消息,截至2022年1月23日,雁塔区长延堡街道近14天内无新增本地病例和聚集性疫情。根据国务院联防联控机制关于分区分级
2022-01-24
  中新网西宁1月23日电 (记者 孙睿)据青海省地震台网测定,2022年1月23日10点21分(北京时间)在青海省海西州德令哈市(北纬38 44度,东经
2022-01-24
江西南昌:市民赏年画迎新年 书法家挥毫送春联
  (新春见闻)江西南昌:市民赏年画迎新年 书法家挥毫送春联  1月23日,“赏年画过大年”新年画作品联展江西南昌站活动在江西省文化馆
2022-01-24
  中新网成都1月23日电 (祝欢)成都市第十七届人民代表大会第六次会议23日在成都举行,成都市中级人民法院院长郭彦与成都市人民检察院检
2022-01-24
列车临时停车3分钟救旅客
  (新春见闻)列车临时停车3分钟救旅客  中新网广州1月23日电 (郭军 黄伟伟)“车长,车长,4号车厢有位旅客腹涨难忍,身体不舒服”…
2022-01-24
女子背负命案潜逃24年 因涉疫人员核查落网
  中新网湖州1月23日电(施紫楠 徐盛煜 赵学良)1998年7月,犯罪嫌疑人杜某因家庭琐事,用菜刀将自己的弟媳砍伤致死。案发后,她从老家河
2022-01-24
广东“00后”雄狮少年锤炼功夫迎新春
  (新春见闻)广东“00后”雄狮少年锤炼功夫迎新春  中新社广州1月23日电 题:广东“00后”雄狮少年锤炼功夫迎新春  作者 孙秋霞 
2022-01-24
05-20 中国旅游日!河北创新发展“旅游+” 打造“京畿福地 乐享河北”品牌
中国旅游日!河北创新发展“旅游+” 打造“京畿福地 乐享河北”品牌
5月19日是第12个中国旅游日。今年中国旅游日主题为感悟中华文化,享受美好旅程。河北内环京津,外环渤海,携太行燕山之威,挟畿辅拱卫之要 [详细]
05-20 西湖游船“国潮宋风”特色夜游上线 体验穿越宋风豪华画舫之旅
西湖游船“国潮宋风”特色夜游上线 体验穿越宋风豪华画舫之旅
西湖之胜,晴湖不如雨湖,雨湖不如夜西湖。想要一边沐着晚风,一边乘坐游船感受西湖夜色的别样美景吗?那就来体验一把穿越宋风的豪华画舫之 [详细]
05-20 杭州:露营成今年最大热点 “城市露营”模式受年轻人追捧
杭州:露营成今年最大热点 “城市露营”模式受年轻人追捧
一顶帐篷、一副桌椅、一张地垫,寻个湖畔草坪,就能体验时下最热的旅行方式——露营。五一假期,杭州灵山景区铜鉴湖九曲梅韵和海棠融春两块 [详细]
03-19 2022岳阳国际旅游节开幕 特色农产品展销等系列活动目不暇接
2022岳阳国际旅游节开幕 特色农产品展销等系列活动目不暇接
今天,天下洞庭岳阳市君山区第九届良心堡油菜花节暨2022岳阳国际旅游节开幕,菊红、粉红、水红、桃红、紫色、白色等七色组成的4万亩花海在 [详细]
03-19 2022年郴州计划重点推进文旅项目101个 总投资354亿元
2022年郴州计划重点推进文旅项目101个 总投资354亿元
3月16日,我市举行全市文旅项目和城市大提质大融城项目集中开工仪式,市委书记吴巨培宣布项目开工。郴州嘉合欢乐世界、仙福路工地清风徐来 [详细]
03-19 宿州泗县深入推进文旅融合发展 擦亮城市品牌
宿州泗县深入推进文旅融合发展 擦亮城市品牌
近年来,泗县以争创安徽省文化旅游名县为目标,深入推进文旅融合发展,努力擦亮水韵泗州 运河名城城市品牌,全县文化旅游业实现高质量发展 [详细]
03-19 淡季不忘引流 京郊民宿市场有望迎来回暖
淡季不忘引流 京郊民宿市场有望迎来回暖
旅游淡季中的京郊民宿有望成为市场中最先复苏的板块。3月17日,北京商报记者调查发现,虽然正值旅游淡季,且受疫情变化的影响,不过各家民 [详细]