Elastic Stack-Elasticsearch介绍

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: Elastic Stack-Elasticsearch介绍

一、前言


  前篇写了好像没有多少人去看,但是还是要继续,我猜想可能是很多人接触的这块比较少吧,Elasticsearch这块有很多要说的,开始吧。


二、数据库、Elasticsearch选择


   传统的数据由于采用的是B+树的索引,当数据量很大很大的时候,例如单表1Y以上的时候当我们在想做like操作的时候,这个是由于like操作会引起全表检索,这个时候非常影响我们查询的效率,当出现这种状况的时候我们就需要考虑下Elasticsearch,没错这就是一个为搜索而生的,Elasticsearch采用的是倒排索引,这里先不要明白什么是倒排索引,下一篇我会比较详细介绍的,这里你有又会问Elasticsearch这么牛逼我们为什么不把它当做持久化DB?这个问题没个人有每个人的看法,只要理由合适就可以,我认为是可以得,但是这里我们要考虑到事务这个特性,传统的数据库是支持ACID,但是在Elasticsearch是不支持的,如果说你的应用不考虑到这点,我支持你使用Elasticsearch作为DB,如果还是要考虑到这些事务的问题,那么我建议你还是将Elasticsearch考虑作为一个搜索和查询展示的工具,这个是我的一些看法,大家有不同意见可以探讨;


三、Elasticsearch介绍


    Elasticsearch 是一个分布式的搜索和分析引擎,可以用于全文检索、结构化检索和分析,并能将这三者结合起来。Elasticsearch是一个基于Apache Lucene的开源搜索引擎。无论在开源还是专有领域,Lucene可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。Wikipedia、Stack Overflow、GitHub 等都基于 Elasticsearch 来构建他们的搜索引擎。


四、Elasticsearch相关概念介绍


   集群(Cluster)

   一个集群包含一个或多个节点,用来保存全部数据,并且这些节点联合提供索引和搜索能力。集群使用唯一名称进行不同集群间的区分,默认名称是”elasticsearch”。

   节点(Node)

  一个Elasticsearch运行实例,是集群的构成单元。集群中的节点,也有唯一标识的,默认在节点启动的时候会随机指定一个UUID。如果不使用默认名称,可以为其指定一个名称,当想要加入某个集群的时候也必须要指定集群的名称;接下来我们还要介绍下节点的类型:

  候选主节点(Master-eligible node)

  一个节点启动后,就会使用Zen Discovery机制去寻找集群中的其他节点,并与之建立连接。集群中会从候选主节点中选举出一个主节点,主节点负责创建索引、删除索引、分配分片、追踪集群中的节点状态等工作。正常情况下,一个集群中只有一个选举出来的主节点,当主节点由于网络或者负载过大停止响应,此时就需要重新选举主节点,这时可能会出现集群中有多个主节点的现象,即节点对集群状态的认知不一致,称之为脑裂现象。这也就是为什么候选主节点要为单数的情况的原因;这里我建议候选主节点不要存放数据,配置如下:

node.master = true
node.data = false


  数据节点(Data node)

  数据节点主要存放索引相关数据的分片,负责数据的存储和相关具体操作,比如CRUD、搜索、聚合等。

node.master = false
node.data = true

 主要介绍这来两种,剩下的大家参考官方文档

  索引(index)

  索引就是相当于Mysql里的Database,存储文档结构相同的类型的集合;

  文档(documnet)

  文档是索引的基础信息单元,相当于Mysql中的行,文档与JSON的形式表现,

  Document MetaData(元数据)

  1._index:文档所在的索引名,多索引查询时,有时候只需要在特地索引名上进行查询,_index字段提供了便利。_index是一个虚拟字段,不会真的加到Lucene索引中。

  2._type:文档所在的类型名,可以根据_type进行查询、聚合、脚本和排序。

  3._id: 文档唯一 id;

  4._uid: 组合id,由_type 和_id 组成;

  5._source:文档的原始Json数据,可以从这里获取每个字段的内容。默认_source字段是开启的,也可以关闭:

  6._all: 字段拼接在一起,将所有的字段用空格分开,_all字段会被解析和索引,但是不存储。当你只想返回包含某个关键字的文档但是不明确地搜某个字段的时候就需要使用_all字段。 默认禁用;

  7._parent:指定同一索引中文档的父子关系;

  8._routing:_routing值是文档的_id或者_parent,通过_routing参数可以设置自定义路由;

  类型(type)

  索引中可以定义一种或多种类型。类型是索引的一个逻辑上的分类;

  字段(field)

  字段是Elasticsearch里面最小的单元,相当于Mysql的列,类似于JSON中的一个键,字段类型:

  字符串: text keyword(不分词);

  数值类型: long integer short(-32,768至32768) byte(-128至127) double float half_float(16位半精度) scaled_float缩放类型的的浮点数(比如价格只需要精确到分,price为88.88的字段缩放因子为100,存起来就是8888);

  布尔型: boolean;

  日期: date;

  二进制: binary;

  范围类型: integer_range float_range long_range double_range date_range;

  分片(shards)

  Elasticsearch将索引分成若干份,默认是5个分片,每个部分是一个分片,每个分片存在不同节点上,一个节点不能存在相同的分片,每个文档通过文档id进行Hash决定放到那个节点上,每个分片都是一个独立的Lucene实例;

  副本(replicas)

  索引的一份或者多份拷贝,默认是1份,主要作用是容灾作用,防止分片丢失后,副本分片会成为主分片,保证数据不会丢失,另外提升查询性能;


五、下节预告


   下次一篇介绍索引的创建、查询原理、分词器等,欢迎点赞

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
5月前
|
运维 架构师 搜索推荐
7 年+积累、 Elastic 创始人Shay Banon 等 15 位专家推荐的 Elasticsearch 8.X新书已上线...
7 年+积累、 Elastic 创始人Shay Banon 等 15 位专家推荐的 Elasticsearch 8.X新书已上线...
72 4
|
5月前
|
存储 安全 数据处理
Elastic 中国开发者大会2023最新干货——Elasticsearch 7、8 新功能一网打尽
Elastic 中国开发者大会2023最新干货——Elasticsearch 7、8 新功能一网打尽
56 0
|
10月前
|
搜索推荐 索引
Elasticsearch elastic io 100%,但磁盘的iops和吞吐量没爆没啥原因吗?
Elasticsearch elastic io 100%,但磁盘的iops和吞吐量没爆没啥原因吗?
162 3
|
10月前
|
存储 缓存 监控
Elasticsearch elastic io 100%,但磁盘的iops和吞吐量没爆没啥原因吗?
Elasticsearch elastic io 100%,但磁盘的iops和吞吐量没爆没啥原因吗?
213 2
|
12月前
|
存储 自然语言处理 监控
ElasticSearch第三讲:ES详解 - Elastic Stack生态和场景方案
ElasticSearch第三讲:ES详解 - Elastic Stack生态和场景方案
134 0
|
缓存 安全 Java
带你读《Elastic Stack 实战手册》之8:—— 3.4.1.1.安装Elasticsearch(本地及docker)(2)
带你读《Elastic Stack 实战手册》之8:—— 3.4.1.1.安装Elasticsearch(本地及docker)(2)
157 1
|
数据采集 数据可视化 搜索推荐
带你读《Elastic Stack 实战手册》之3:——3.1.1.从 Elasticsearch 到 Elastic Stack(上)
带你读《Elastic Stack 实战手册》之3:——3.1.1.从 Elasticsearch 到 Elastic Stack(上)
243 0
|
存储 安全 数据可视化
带你读《Elastic Stack 实战手册》之3:——3.1.1.从 Elasticsearch 到 Elastic Stack(中)
带你读《Elastic Stack 实战手册》之3:——3.1.1.从 Elasticsearch 到 Elastic Stack(中)
177 0
|
测试技术 Apache
带你读《Elastic Stack 实战手册》之3:——3.1.1.从 Elasticsearch 到 Elastic Stack(下)
带你读《Elastic Stack 实战手册》之3:——3.1.1.从 Elasticsearch 到 Elastic Stack(下)
169 0
|
存储 缓存 Ubuntu
带你读《Elastic Stack 实战手册》之8:—— 3.4.1.1.安装Elasticsearch(本地及docker)(1)
带你读《Elastic Stack 实战手册》之8:—— 3.4.1.1.安装Elasticsearch(本地及docker)(1)
190 0