ES-科普知识篇

本文主旨是为了让更多的码农朋友了解ES,便于更好的使用。

前言

随着近年来大数据的发展,搜索对于企业以及用户来说已经很是重要了。在搜索引擎的世界中,Lucene是一个Apache的开源搜索引擎工具包,相当于一个发动机,ES是将其封装打包的成品车。同样被打包的还有solr,其各有优缺点,但让互联网公司青睐的是ES的近实时性,所以ES逐步风生水起。

1. ES是什么

ES是一个基于Lucene构建的开源、分布式、RESTful接口全文 搜索引擎
ES可以干什么:

  • 大批数据量的精准搜索;
  • 收集、分析和挖掘日志或者交易信息;
  • 价格提醒;
  • 快速调查、分析和可视化数据;
  • GitHub。
    ES的特点
  • (横向)可扩展性;
  • 分布性;
  • 高可用;
  • 简单易用。

2. 全文搜索

全文搜索是指计算机搜索程序通过扫描文章的每一个词,并对其简历索引,指明该词在文章中出现的次数和位置,当用户查询时,搜索程序根据事先建立好的索引进行查找,并将结果返回给用户。
倒排索引
因为Lucene采用的是倒排索引,此处简单介绍下倒排索引。

开发中常见的索引是根据记录来查找属性,如根据ID来获取文章,然后看文章里面都讲的是什么。而实际生活中更多的是需要根据属性来查找值,比如你在搜索本文时,是根据关键字“ES”查询文章的标题、内容等,来获取文章的。这也就是倒排索引的起源。

倒排索引的建立大致分为三步:

  1. 取关键字:取一些偏向有实际意义的关键字,剔除的、地、得、是之类的字;
  2. 建立倒排索引:以关键字,文章ID,出现频次,出现位置组成索引;
  3. 实现:将关键字作为词典文件(Term Dictionary),文章ID和出现频次作为频率文件(frequencies),出现位置作为位置文件(positions)保存。其中词典文件中有指针指向后两者。

Tips:关键字以字符顺序来排,所以可以使用二元搜索法快速定位。一般索引采用的B-tree结构。

压缩算法

3. ES术语

以下只是对术语的概述,如想更深入的了解,看完概述后,参见Tips部分。
底层分析部分术语

索引词(term):一个能够被索引的精确值。
文本(text):一段非常普通的文字。
分析(analysis):将文本转换为索引词的过程,分析的结果依赖于分词器。

配置部分术语

节点(node):一个逻辑上独立的服务,可以有储存数据、服务管理、负载等功能。
集群(cluster):至少有一个ES节点的对外提供服务的ES群体。
分片(shard):单个Lucene实例。ES中存储数据的地方,也是比较底层的功能。
路由(routing):文档存储到主分片中的过程。
主分片(primary shard):系统存储数据文档的地方。
副分片(replica shard):主分片的复制。
复制(replica):主分片到副分片的过程。

开发部分术语

索引(index):具有相同结构的文档集合。
类型(type):索引的逻辑分区。
字段(field):每个字段对应一个字段类型,如整数、字符串等。
主键(ID):文件的唯一标识。
文档(document):存储在ES中的一个JSON字符串。
映射(mapping):定义了每一个索引type 的字段类型和索引范围内的设置。

为了更好的理解开发部分术语,在此引入ES和RDBMS的比较。

Relational DB  ⇒ Databases  ⇒ Tables ⇒ Rows      ⇒ Columns
关系型数据库        数据库        表      行            列  
Elasticsearch  ⇒ Indexes    ⇒ Types  ⇒ Documents ⇒ Fields
Elasticsearch      索引          类型      文档       域(字段)

Tips:

  • 分词器会将文本分析成索引词。
  • 集群的名称必须唯一,当集群名称一样时,会自动加入集群。多个集群时,注意修改集群名称。如不修改默认为“Elasticsearch”。
    节点名字也必须唯一,启动自分配。节点可以存储数据、参与索引和搜索功能。ES通过名称来对节点进行管理和通信。
  • 在存储文档时,会将其存在唯一的主分片中,一般通过文档ID散列来选择。默认的主分片有5个,副分片也有5个。当主分片失败时,会副分片中选一个作为主分片。
    分片有主副是为了更好的水平扩展和并行操作。
  • 字段还可以指定如何分析该字段的值。

以下内容建议在搭建完一个ES服务器之后再进行阅读:

自动选举
elasticsearch集群一旦建立起来以后,会选举出一个master,其他都为slave节点。
当主节点挂了,从节点会自己选举出一个主节点。
当机器分布在两个机房时,两个机房断开连接,每个机房会自己选举出一个master。当连接回复,此时会出现数据冲突。
解决办法discovery.zen.minimum_master_nodes属性设置为超过一半的节点数。
如5台master,A机房3台master,B机房2台master,A、B机房失连,此时两个机房会自己选举出自己的master,恢复连接后,会出现脑裂现象,此时可以设置discovery.zen.minimum_master_nodes = 3,就会以A机房(大于等于3的)的master为主,B机房的节点会停止服务(处于一直寻找集群状态,直到AB连通)。

自动发现
elasticsearch的集群是内嵌自动发现功能的。
意思就是说,你只需要在每个节点配置好了集群名称,节点名称,互相通信的节点会根据es自定义的服务发现协议去按照多播的方式来寻找网络上配置在同样集群内的节点。

脑裂
也叫区间集群(partitioned cluster),当两(多)个节点同时认为自已是唯一处于活动状态的服务器从而出现争用资源的场景。所以为了防止脑裂,无论集群还是分布式,节点总个数一定要有事先的规划。

单播(unicast)协议:只能指定要发现的节点信息,指定集群地址discovery.zen.ping.unicast.hosts。

组播(multicast)协议:自动发现同一网段的节点集群。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念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

推荐阅读更多精彩内容

  • 目录 Elasticsearch 5集群部署与测试...................................
    Lewis001阅读 5,594评论 0 4
  • 欢迎访问我的博客查看原文:http://wangnan.tech 注:文本整理自《ELKstack权威指南》 架构...
    GhostStories阅读 19,779评论 0 31
  • 很少写技术博客,一是觉得自己技术有限,怕误人子弟;二是文笔较差,比较排斥写作之类的工作。话说不锻炼,哪会有进步呢,...
    奔跑的番茄酱阅读 42,270评论 7 132
  • 看了哈利波特的官方展 发现古龙比金庸更好读 加了个圈 A了基三 买了第一套cos服 第一次排练舞台剧 陪朋友去了脑...
    heim_dn阅读 119评论 0 0
  • 晚上听樊登读书会《干法》,了解了一下作为日本“经营四圣”之一的稻盛和夫。 工作可以提升自己的心智。 长时间的工作,...
    作者伍辰阅读 230评论 1 2