《深入理解Elasticsearch(原书第2版)》一1.2.1 Elasticsearch的基本概念

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

本节书摘来华章计算机《深入理解Elasticsearch(原书第2版)》一书中的第1章 ,第1.2.1节,[美]拉斐尔·酷奇(Rafal Ku) 马雷克·罗戈任斯基(Marek Rogoziski)著 张世武 余洪淼 商旦 译 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.2.1 Elasticsearch的基本概念

现在,让我们浏览一下Elasticsearch的基本概念以及它们的特征。
1. 索引
Elasticsearch将它的数据存储在一个或者多个索引(index)中。用SQL领域的术语来类比,索引就像数据库,可以向索引写入文档或者从索引中读取文档。就像之前说过的那样,Elasticsearch在内部使用Lucene将数据写入索引或从索引中检索数据。读者需要注意的是,Elasticsearch中的索引可能由一个或多个Lucene索引构成,细节由Elasticsearch的索引分片(shard)、复制(replica)机制及其配置决定。
2. 文档
文档(document)是Elasticsearch世界中的主要实体(对Lucene来说也是如此)。对于所有使用Elasticsearch的案例来说,它们最终都会被归结到对文档的搜索之上。文档由字段构成,每个字段包含字段名以及一个或多个字段值(在这种情况下,该字段被称为是多值的,即文档中有多个同名字段)。文档之间可能有各自不同的字段集合,文档并没有固定的模式或强制的结构。这种现象看起来很眼熟(这些规则也适用于Lucene文档)。事实上,Elasticsearch的文档最后都被存储为Lucene文档了。从客户端的角度来看,文档是一个JSON对象(想了解更多关于JSON格式的细节,请参考http://en.wikipedia.org/wiki/JSON)。
**3. 类型
**Elasticsearch中每个文档都有与之对应的类型(type)定义。这允许用户在一个索引中存储多种文档类型,并为不同文档类型提供不同的映射。如果同SQL领域类比,Elasticsearch的类型就像一个数据库表。
4. 映射
正如你在1.1节所了解到的那样,所有文档在写入索引前都将被分析。用户可以设置一些参数,决定如何将输入文本分割为词条,哪些词条应该被过滤掉,或哪些附加处理有必要被调用(例如移除HTML标签)。这就是映射(mapping)扮演的角色:存储分析链所需的所有信息。虽然Elasticsearch能根据字段值自动检测字段的类型,有时候(事实上几乎是所有时候)用户还是想自己来配置映射,以避免出现一些令人不愉快的意外。
5. 节点
单个的Elasticsearch的服务实例被称为节点(node)。很多时候部署一个Elasticsearch节点就足以应付大多数简单的应用,但是考虑到容错性或者数据膨胀到单机无法应付这些状况,也许你会更倾向于使用多节点的Elasticsearch集群。
Elasticsearch节点可以按用途分为3类。众所周知,Elasticsearch是用来索引和查询数据的,因此第1类节点就是数据(data)节点,用来持有数据,提供对这些数据的搜索功能。第2类节点指主(master)节点,作为监督者负责控制其他节点的工作。一个集群中只有一个主节点。第3类节点是部落(tribe)节点。部落节点是Elasticsearch 1.0版新引入的节点类型,它可以像桥梁一样连接起多个集群,并允许我们在多个集群上执行几乎所有可以在单集群Elasticsearch上执行的功能。
6. 集群
多个协同工作的Elasticsearch节点的集合被称为集群(cluster)。Elasticsearch的分布式属性使我们可以轻松处理超过单机负载能力的数据量。同时,集群也是无间断提供服务的一种解决方案,即便当某些节点因为宕机或者执行管理任务(例如升级)不可用时,Elasticsearch几乎是无缝集成了集群功能。在我们看来,这是它胜过竞争对手的最主要优点之一。在Elasticsearch中配置一个集群是再容易不过的事了。
7. 分片
正如我们之前提到的那样,集群允许系统存储的数据总量超过单机容量。为了满足这个需求,Elasticsearch将数据散布到多个物理的Lucene索引上去。这些Lucene索引被称为分片(shard),而散布这些分片的过程叫做分片处理(sharding)。Elasticsearch会自动完成分片处理,并且让用户看来这些分片更像是一个大索引。请记住,除了Elasticsearch本身自动进行分片处理外,用户为具体的应用进行参数调优也是至关重要的,因为分片的数量在索引创建时就被配置好了,之后无法改变,除非创建一个新索引并重新索引全部数据。
8. 副本
分片处理允许用户推送超过单机容量的数据至Elasticsearch集群。副本(replica)则解决了访问压力过大时单机无法处理所有请求的问题。思路是很简单的,为每个分片创建冗余的副本,处理查询时可以把这些副本当作最初的主分片(primary shard)使用。值得注意的是,副本给Elasticsearch带来了更多的安全性。如果主分片所在的节点宕机了,Elasticsearch会自动从该分片的副本中选出一个作为新的主分片,因此不会对索引和搜索服务产生干扰。可以在任意时间点添加或移除副本,所以一旦你有需要,可随时调整副本的数量。

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
2月前
|
存储 分布式计算 大数据
大数据-169 Elasticsearch 索引使用 与 架构概念 增删改查
大数据-169 Elasticsearch 索引使用 与 架构概念 增删改查
62 3
|
1月前
|
测试技术 API 开发工具
ElasticSearch核心概念:倒排索引
ElasticSearch核心概念:倒排索引
52 6
|
2月前
|
JSON 关系型数据库 API
ElasticSearch 的概念解析与使用方式(二)
ElasticSearch 的概念解析与使用方式(二)
27 1
|
2月前
|
存储 搜索推荐 Java
ElasticSearch 的概念解析与使用方式(一)
ElasticSearch 的概念解析与使用方式(一)
64 1
|
4月前
|
存储 运维 搜索推荐
运维开发.索引引擎ElasticSearch.倒序索引的概念
运维开发.索引引擎ElasticSearch.倒序索引的概念
53 1
|
6月前
|
存储 搜索推荐 关系型数据库
【搜索引擎】elastic search核心概念
【搜索引擎】elastic search核心概念
52 0
|
存储 机器学习/深度学习 负载均衡
【Elasticsearch】学好Elasticsearch系列-核心概念
【Elasticsearch】学好Elasticsearch系列-核心概念
103 0
|
存储 监控 搜索推荐
ElasticSearch第二讲:ES详解 - ElasticSearch基础概念
ElasticSearch第二讲:ES详解 - ElasticSearch基础概念
244 0
|
存储 SQL 自然语言处理
|
存储 自然语言处理 搜索推荐
ElasticSearch的基本介绍与用途、ElasticSearch中一些基本的概念、倒排索引的基本概念
ElasticSearch的基本介绍与用途、ElasticSearch中一些基本的概念、倒排索引的基本概念
136 1