Elasticsearch入门学习,这一篇就够了

目录

一、ES简介

二、ES应用场景

三、ES核心概念

四、ES架构

4.1整体架构

4.2 集群架构

五、ES原理

5.1 Lucence存储和检索

5.2 ES写数据

5.3 ES读数据

5.4 ES检索关键词

5.5 ES删数据

六、ES常用API

6.1 索引操作

6.2 文档操作

6.3 查询操作

6.4 分词器使用

七、ES中的数据类型

7.1 字符串类型 

7.2 整数类型

7.3 浮点类型

7.4 逻辑类型  

7.5 日期类型  

7.6 范围类型 

7.7 二进制类型 

7.8 复合类型

7.9 多数据类型


一、ES简介

 Elasticsearch 是由Apache开源的一个兼有搜索引擎和NoSQL数据库功能的系统,其特点主要如下。

l  基于Java/Lucene构建,支持全文搜索、结构化搜索

l  低延迟,支持实时搜索

l  分布式部署,可横向集群扩展

l  支持百万级数据

l  支持多条件复杂查询,如聚合查询

l  高可用性,数据可以进行切片备份

l  支持Restful风格的api调用

二、ES应用场景

ES作为全文检索的搜索引擎,在以下几个方面都存在着相应的应用:

l  监控。针对日志类数据进行存储、分析、可视化。针对日志数据,ES给出了ELK的解决方案。其中logstash采集日志,ES进行复杂的数据分析,kibana进行可视化展示。

l  电商网站。用于商品信息检索。

l  Json文档数据库。用于存放json格式的文档。

l  维基百科。提供全文搜索并高亮关键字

三、ES核心概念

下面分别介绍ES中的核心概念词:

l  集群(Cluster): 包含一个或多个具有相同 cluster.name 的节点.

l  节点(node): 是一个逻辑上独立的服务,可以存储数据,并参与集群的索引和搜索功能, 每个节点都有其唯一的名字,集群通过节点名称进行管理和通信。节点可以充当一个或多个角色。ES集群中的每个节点都会存储集群状态,知道索引内各分片所在的节点位置。

l  主节点(master node):主要负责集群方面的操作,比如节点的加入和退出、索引的创建和删除、分片被分配到哪个节点、节点状态监测。

l  数据节点(Data Node):存储文档数据的节点,执行文档数据的查询和写入等操作。

l  协调节点(Coordinate Node):客户端请求可以发送到集群的任何节点,集群中的每个节点都知道所有文档的位置。接收到客户端请求的节点自动变为协调节点,进行请求的转发,并整合数据返回给客户端。比如创建索引的请求,就转发到主节点。

l  映射(Mapping): mapping是对索引库中的索引字段及其数据类型进行定义,类似于关系型数据库中的表结构。ES默认动态创建索引和索引类型的mapping,这就像是关系型数据库中无需定义表结构,更不用指定字段的数据类型。也可以手动指定mapping类型。mapping机制可以自动检测数据的结构和类型,创建索引并使数据可搜索。

l  分片(shard):索引数据量很大,超过硬件存放单个文件的限制,就会影响查询请求的速度,Es引入了分片技术。一个分片本身就是一个完整的搜索引擎,文档存储在分片中,而分片会被分配到集群中的各个节点中,随着集群的扩大和缩小,ES会自动的将分片在节点之间进行迁移,以保证集群能保持平衡。一个索引中含有shard的数量,默认值为5,在索引创建后这个值是不能被更改的。

l  副本(replica):切片(shard)的冗余备份,每个切片默认的副本数为1。副本数可以随时进行调整。

l  索引(Index): 索引与关系型数据库实例(Database)相当。索引只是一个逻辑命名空间。ES可以把索引数据存放到服务器中,也可以sharding(分片)后存储到多台服务器上。每个索引有一个或多个分片,每个分片可以有多个副本。

l  文档类型(Type):相当于数据库中的table概念。每个文档在ElasticSearch中都必须设定它的类型。文档类型使得同一个索引中在存储结构不同文档时,只需要依据文档类型就可以找到对应的参数映射(Mapping)信息,方便文档的存取。

在 5.X 版本中,一个 index 下可以创建多个 type;

在 6.X 版本中,一个 index 下只能存在一个 type;

在 7.X 版本中,直接去除了 type 的概念,就是说 index 不再会有 type。

原因分析:

为何要去除 type 的概念?

答: 因为 Elasticsearch 设计初期,是直接查考了关系型数据库的设计模式,存在了 type(数据表)的概念。

但是,其搜索引擎是基于 Lucene 的,这种 “基因”决定了 type 是多余的。 Lucene 的全文检索功能之所以快,是因为 倒序索引 的存在。

而这种 倒序索引 的生成是基于 index 的,而并非 type。多个type 反而会减慢搜索的速度。

为了保持 Elasticsearch “一切为了搜索” 的宗旨,适当的做些改变(去除 type)也是无可厚非的,也是值得的。

l  文档(Document) :相当于数据库中的row, 是可以被索引的基本单位。其可以理解为关系型数据库中表的一行数据记录。每个文档由多个字段(field)组成,区别于关系型数据库的是,ES是一个非结构化的数据库,每个文档可以有不同的字段,并且有一个唯一标识。

ES和关系型数据库概念对比如下:

ES

关系型数据库

索引(Index)

数据库(DataBase)

类型(Type)

表(Table)

映射(mapping)

表结构(Schema)

文档(Document)

行(Row)

字段(Field)

列(Column)

反向索引

正向索引

DSL查询

SQL查询

l  Segment:段,Lucence中存储是按段来进行存储,每个段相当于一个数据集。

l  Commit Point:提交点,记录着Lucence中所有段的集合。

l  Lucene Index:Lucene索引,由一堆Segment段集合和commit point组成。

l  Lucene:Apache开源的全文检索开发工具包,通俗理解是一个java的jar包。

四、ES架构

4.1整体架构

                                                   ES整体架构图

下面将由下到上的对ES整体架构图中的各个部分进行介绍:

  • 最底层的Gateway部分是ES的数据持久化,ES中的数据可以存储在本地,也可以通过分片的形式进行集群存储,还可以使用hadoop的hdfs分布式文件系统和亚马逊的s3来进行分布式存储。

  •  Distributed Lucence Directory:顾名思义,指的是每个索引下切片的Lucence目录

  • ES中间的三个模块分别为索引模块、搜索模块、映

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值