ES搜索引擎的技术要点
1.搜索引擎的工作原理
搜索引擎的基本原理是通过生成目录(索引)来快速找到包含特定关键词的文章。在大数据时代,这个过程可以分为三步:第一步,给资料编号;第二步,将每篇资料内容切成词;第三步,将词和资料编号的对应关系处理成“词=》编号列表”的形式。这样,当我们输入一个关键词时,搜索引擎可以直接从索引中找到这个词对应的文章编号列表,从而实现快速搜索。
2.ES搜索引擎的特性
ES(Elasticsearch)是一个基于Apache
Lucene的开源搜索引擎,它提供了一个分布式多用户能力的全文搜索引擎,同时也基于RESTful
Web接口,可以快速地储存、搜索和分析海量数据。ES的设计理念是分布式搜索引擎,它的核心功能是通过简单的RESTful
API来隐藏Lucene的复杂性,从而让全文搜索变得简单。ES还具有高可用、可扩展、安装使用简单等优点。
3.ES搜索引擎的架构和组件
在ES搜索引擎中,存储数据的基本单位是索引,一个索引可以被分割成多个
shard,每个
shard存储部分数据。这些
shard
的数据会有多个备份,每个
shard
都有一个
primary
shard,负责写入数据,还有几个
replica
shard。ES中有多个节点,会自动选举一个节点为master节点,这个master节点实际上就是干一些管理的工作,从而维护元数据,也可以成为协调节点。如果非master节点宕机后,那么会由master节点中断,如果宕机的那个节点是primaryshard,master节点会自动将其他的replica节点转换为primary节点继续工作。
4.ES搜索引擎的数据处理和查询过程
ES搜索引擎在写数据过程中,客户端选择一个es节点将数据发送过去,这个节点的数据就是coordinatingnode(协调节点)。协调节点通过对数据进行Hash算法,并对文档数据进行路由,将请求转发给对应的节点(具有primaryshard)。实际的节点上有一个primaryshard处理请求,然后将数据同步到replica节点上。在读数据过程中,可以通过docid来查询,会根据docid进行hash,判断出来当时把docid分配到了其中shard上面去,从那个shard去查询。
5.ES搜索引擎与其它搜索引擎的比较
与其它搜索引擎相比,如Lucene、Solr、Sphinx等,ES在横向扩展和高可用方面具有优势。ES是天生为了集群化而设计的,可以轻松地扩展到上百台服务器,处理PB级别的数据。而像Sphinx这样的搜索引擎,虽然也能做到这些功能,但是在易用性和用户体验方面不如ES。ES还支持更多的查询算法和支持更复杂的查询逻辑,这些都是其它搜索引擎所不及的。
追问
延伸阅读
参考资料为您提炼了 5 个关键词,查找到 79479 篇相关资料。