ElasticSearch(一)简介

作者:罗海鹏,叩丁狼教育高级讲师。原创文章,转载请注明出处。

前言

       我们建立一个网站或者一个应用通常都会有搜索的功能,如果我们做的只是用户量很少的内网项目,并且搜索的字段都是一些内容很简短的字段,比如名字,编号之类的,那完全可以用数据库like语句

       但是,数据库like查询性能非常低,如果搜索的请求多,或者需要搜索的是大文本类型的内容(全文搜索),那么这种搜索的方案是不可取的。

       那既然我们要做性能高的全文搜索,这个需求又不能依赖数据库,只能有我们自己来实现了,但是令我们很受打击的是全文搜索是很难实现的,我们不仅希望能全文搜索,还希望它足够稳定足够快,希望我们的搜索结果有关键字高亮,并且能按各种匹配分数来排序,希望它能切换不同的分词算法来满足各种分词需求。所以说,我们想要做一个功能完善,性能强大的全文搜索真的不是那么简单,而全文搜索又是一个常见的需求,所以市面上已经有一些现成的解决方案了。

       这些现成的解决方案开源出来,获得大量的社区开发者支持,不断为其开发插件,使其不断优化和完善,这就成了我们所说的搜索引擎了。
       这些搜索引擎正是我们需要的,它可以解决我们遇到的痛点,我们可以直接拿这些开源的搜索引擎来使用,无需关心它如何实现,我们只需要专注我们业务的开发就行了,这样的话也避免了我们出现重复造轮子的现象了,而且这还是一个很麻烦的轮子。

       在这些开源的搜索引擎中有一个特别优秀,市场占有量最大,他就是Lucene。但是随着分布式应用,微服务应用,云计算,大数据这些技术的兴起,像搜索这样的非常消耗系统性能的服务也应该把它抽取出来独立部署为一个服务系统,甚至是一个大型的云服务。然后根据访问的压力,可以横向扩展做搜索服务的集群,集群中的每个节点的数据都能以一个接近实时的速度来同步数据,并把请求按多种不同的算法来分发到具体的服务节点。而服务化了的搜索引擎能支持RESTful方式请求,并且交互的数据以json这种轻量数据格式。如果我们想让我们的全文搜索具备以上所提到的这些能力,那只使用Lucene是显然不够的,我们还得围绕着Lucene做大量的事情,这样的工作量和工作难度可能大多数中小型企业难以承受。但是,往往世界上就有那么一群人,他们很有能力,并且富有分享精神,他们以Lucene为核心构建了一套强大的搜索服务器,当然这些搜索服务器不但具备着搜索引擎本该有的一整套搜索相关的功能,还具备着我们上面所说的这些能力,最重要的是:它们是开源共享的。而它们中最有名气的就是elasticsearch和solr。其中,elasticsearch就是我们要深入探讨的技术。

Elasticsearch是什么

       Elasticsearch是一个基于Lucene搜索引擎为核心构建的开源,分布式,RESTful搜索服务器。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便,轻松扩展服务节点。
Elasticsearch是用Java开发的,但它却不是只支持Java语言,因为它支持RESTful方式调用,那理论上它是支持所有开发语言的,除此之外,如果你不想使用RESTful方式调用Elasticsearch服务器,那Elasticsearch还提供了各种语言的api供我们使用。
我们通过以下这张分析图来看看elasticsearch是如何工作的:

ES服务器工作示意图.png

相关概念

接近实时(NRT):
       Elasticsearch 是一个接近实时的搜索平台。这意味着,从索引一个文档直到这个文档能够被搜索到有一个很小的延迟,包括如果做了集群的话,集群中的各个节点数据同步也是接近实时的。

集群(cluster):
       elasticsearch一个很大的优势是它可以很方便的做集群,在一个elasticsearch的集群中,有很多的节点(node),其中有一个为主节点,这个主节点是可以通过选举产生的,主从节点是对于集群内部来说的。es的一个概念就是去中心化,字面上理解就是无中心节点,这是对于集群外部来说的,因为从外部来看es集群,在逻辑上是个整体,你与任何一个节点的通信和与整个es集群通信是等价的。

节点(node):
       节点(node)其实就是一个elasticsearch服务器的实例,节点(node)主要有3种类型,第一种类型是client_node,主要是起到请求分发的作用,类似路由。第二种类型是master_node,是主的节点,所有的新增,删除,数据分片都是由主节点操作(elasticsearch底层是没有更新数据操作的,上层对外提供的更新实际上是删除了再新增),当然也能承担搜索操作。第三种类型是date_node,该类型的节点只能做搜索操作,具体会分配到哪个date_node,就是由client_node决定,而data_node的数据都是从master_node同步过来的。

索引(index):
       ElasticSearch将它的数据存储在一个或多个索引(index)中。用SQL领域的术语来类比,索引就像数据库,可以向索引写入文档或者从索引中读取文档。

文档类型(type):
       文档类型(type)是用来规定文档的各个字段内容的数据类型和其他的一些约束,相当于关系型数据库中的表,一个索引(index)可以有多个文档类型(type)。

文档(document):
       在Elasticsearch中,文档(document)是存储数据的载体,包含一个或多个字段。一个文档(document)相当于关系型数据库中的一行数据。

       这些就是elasticsearch的一些比较重要的概念,还有其他的概念我们就不一一列举了,但是大家通过以上的概念可能发现,elasticsearch的设计跟关系型数据库的设计还是挺像的,我们可以通过关系型数据库的概念来类比着学习elasticsearch,所以来看看以下这张对比图:


MySQL和elasticsearch概念对比.png

       那么关于Elasticsearch的介绍就先讲到这里,下个章节我们就来把Elasticsearch安装起来使用。

WechatIMG9.jpeg
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容