`
weitao1026
  • 浏览: 1062614 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Elasticsearch数据架构及基本特点

 
阅读更多

Elasticsearch是由Shay Banon发起的一个开源搜索服务器项目,2010年2月发布。迄今,该项目已发展成为搜索和数据分析解决方案领域的主要一员,广泛应用于声名卓著或鲜为人知的搜索应用程序。此外,由于其分布式性质和实时功能,许多人把它作为文档数据库。

Elasticsearch架构简单介绍如下。

索引

索引(index)是Elasticsearch对逻辑数据的逻辑存储,所以它可以分为更小的部分。你可以把索引看成关系型数据库的表。然而,索引的结构是为快速有效的全文索引准备的,特别是它不存储原始值。如果你知道MongoDB,可以把Elasticsearch的索引看成MongoDB里的一个集合。如果你熟悉CouchDB,可以把索引看成CouchDB数据库索引。Elasticsearch可以把索引存放在一台机器或者分散在多台服务器上,每个索引有一或多个分片(shard),每个分片可以有多个副本(replica)。

文档

存储在Elasticsearch中的主要实体叫文档(document)。用关系型数据库来类比的话,一个文档相当于数据库表中的一行记录。当比较Elasticsearch中的文档和MongoDB中的文档,你会发现两者都可以有不同的结构,但Elasticsearch的文档中,相同字段必须有相同类型。这意味着,所有包含title字段的文档,title字段类型都必须一样,比如string。

文档由多个字段组成,每个字段可能多次出现在一个文档里,这样的字段叫多值字段(multivalued)。每个字段有类型,如文本、数值、日期等。字段类型也可以是复杂类型,一个字段包含其他子文档或者数组。字段类型在Elasticsearch中很重要,因为它给出了各种操作(如分析或排序)如何被执行的信息。幸好,这可以自动确定,然而,我们仍然建议使用映射。与关系型数据库不同,文档不需要有固定的结构,每个文档可以有不同的字段,此外,在程序开发期间,不必确定有哪些字段。当然,可以用模式强行规定文档结构。从客户端的角度看,文档是一个JSON对象(关于JSON格式的更多内容,参见http://en.wikipedia.org/wiki/JSON)。每个文档存储在一个索引中并有一个Elasticsearch自动生成的唯一标识符和文档类型。文档需要有对应文档类型的唯一标识符,这意味着在一个索引中,两个不同类型的文档可以有相同的唯一标识符。

文档类型

在Elasticsearch中,一个索引对象可以存储很多不同用途的对象。例如,一个博客应用程序可以保存文章和评论。文档类型让我们轻易地区分单个索引中的不同对象。每个文档可以有不同的结构,但在实际部署中,将文件按类型区分对数据操作有很大帮助。当然,需要记住一个限制,不同的文档类型不能为相同的属性设置不同的类型。例如,在同一索引中的所有文档类型中,一个叫title的字段必须具有相同的类型。

映射

在有关全文搜索基础知识部分,我们提到了分析的过程:为建索引和搜索准备输入文本。文档中的每个字段都必须根据不同类型做相应的分析。举例来说,对数值字段和从网页抓取的文本字段有不同的分析,比如前者的数字不应该按字母顺序排序,后者的第一步是忽略HTML标签,因为它们是无用的信息噪音。Elasticsearch在映射中存储有关字段的信息。每一个文档类型都有自己的映射,即使我们没有明确定义。

现在,我们已经知道Elasticsearch把数据存储在一个或多个索引上,每个索引包含各种类型的文档。我们也知道了每个文档有很多字段,映射定义了Elasticsearch如何对待这些字段。但还有更多,从一开始,Elasticsearch就被设计为能处理数以亿计的文档和每秒数以百计的搜索请求的分布式解决方案。这归功于几个重要的概念,我们现在将更详细地描述。

节点和集群

Elasticsearch可以作为一个独立的单个搜索服务器。不过,为了能够处理大型数据集,实现容错和高可用性,Elasticsearch可以运行在许多互相合作的服务器上。这些服务器称为集群(cluster),形成集群的每个服务器称为节点(node)。

分片

当有大量的文档时,由于内存的限制、硬盘能力、处理能力不足、无法足够快地响应客户端请求等,一个节点可能不够。在这种情况下,数据可以分为较小的称为分片(shard)的部分(其中每个分片都是一个独立的Apache Lucene索引)。每个分片可以放在不同的服务器上,因此,数据可以在集群的节点中传播。当你查询的索引分布在多个分片上时,Elasticsearch会把查询发送给每个相关的分片,并将结果合并在一起,而应用程序并不知道分片的存在。此外,多个分片可以加快索引。

副本

为了提高查询吞吐量或实现高可用性,可以使用分片副本。副本(replica)只是一个分片的精确复制,每个分片可以有零个或多个副本。换句话说,Elasticsearch可以有许多相同的分片,其中之一被自动选择去更改索引操作。这种特殊的分片称为主分片(primary shard),其余称为副本分片(replica shard)。在主分片丢失时,例如该分片数据所在服务器不可用,集群将副本提升为新的主分片。

分享到:
评论

相关推荐

    02-EElasticsearch 升级和双活架构实践 - 徐胜 上海 2025.5.25

    ### Elasticsearch 升级与双活架构实践 #### 一、Elasticsearch 从 ES6 到 ES8 的升级与优化实践 **1.1 背景与挑战** 随着业务的发展和技术的进步,从 ES6 升级至 ES8 成为了必要之举。此次升级不仅要解决旧版本...

    elasticsearch运维实践

    Index是一个逻辑上的存储单元,Type是Index中的一个逻辑分区,Document是Elasticsearch中的基本数据单元。 2. Elasticsearch的数据存储 Elasticsearch使用倒排索引(Inverted Index)来存储数据,该索引由两个部分...

    elasticsearch6.1.0+elasticsearch head

    Elasticsearch 是一个开源的、基于 Lucene 的全文搜索引擎,它具有分布式、实时、可扩展的特点,被广泛应用于日志分析、实时监控、数据搜索等多个场景。在6.1.0版本中,Elasticsearch 提供了更高效的数据处理能力、...

    ElasticSearch学习笔记

    ElasticSearch的特点是高性能、可扩展性强、支持多种数据源和支持实时搜索。 六、安装和配置ElasticSearch 安装和配置ElasticSearch需要Java环境和CentOS操作系统。首先,需要安装JDK,然后下载ElasticSearch的...

    EleasticSearch基本原理及架构.pdf

    **Elasticsearch 基本原理与架构** 在面对大规模数据检索的问题时,尤其是在数据量达到10亿、100亿级别的系统中,我们需要考虑以下几个关键点:选择适合的数据库(如MySQL、Sybase、Oracle、MongoDB、HBase等)、...

    阿里云 专有云企业版 V3.5.2 Elasticsearch 技术白皮书 - 20180831.pdf

    本白皮书涵盖了Elasticsearch的基本概念、架构设计、数据处理、查询语言、聚合分析、数据 visualization等方面的内容。 法律声明 在阅读或使用本文档之前,用户务必仔细阅读、充分理解本法律声明的全部内容。如果...

    elasticsearch-master.zip

    Elasticsearch是一个开源的全文搜索引擎,它以分布式、RESTful接口和实时性为特点,广泛应用于数据搜索、分析和监控。"elasticsearch-master.zip" 文件很可能是Elasticsearch的源码或者一个配置齐全的Elasticsearch...

    ElasticSearch_6.8.0版本.md

    ### ElasticSearch 6.8.0 版本详解 #### 1. RESTful 架构原理及应用 REST(Representational State Transfer...无论是对于数据分析师还是开发人员来说,掌握 ElasticSearch 的基本原理及其应用场景都是非常有价值的。

    ElasticSearch个人笔记【深入浅出,非常完整】.zip

    此外,实时性是Elasticsearch的一大特点,更新后的数据几乎立即可以被搜索到。 搜索功能是Elasticsearch的核心。笔记将介绍全文本搜索、模糊搜索、短语搜索、过滤器(Filter)和聚合(Aggregation)等高级特性。...

    elasticsearch6.4windows版本

    1. **分布式架构**:Elasticsearch设计为分布式的搜索引擎,可以轻松地在多台机器上部署,实现自动的数据分片和复制,确保数据的高可用性和容错性。 2. **实时性能**:Elasticsearch能够实时地索引和搜索数据,无需...

    elasticsearch简介及资源推荐

    1. **分布式架构**:Elasticsearch能够自动将数据分割成多个分片,并将这些分片分布到不同的节点上,从而实现水平扩展。 2. **实时搜索**:Elasticsearch能够在几秒钟内对新添加或修改的数据进行索引,使用户能够...

    elasticsearch-1.7.1

    总的来说,Elasticsearch 1.7.1是了解Elasticsearch基本概念和操作的好起点,尽管它可能缺乏一些现代特性,但它仍然揭示了Elasticsearch作为一个强大搜索和分析引擎的基础架构。对于初次接触或者学习Elasticsearch的...

    Elasticsearch 是一个强大的开源分布式搜索和分析引擎 它具有以下显著的特点和优势: 分布式架构:能够轻松地在多个节

    使用 Elasticsearch 进行数据分析的基本流程通常包括以下几个步骤: 1. **数据采集**:首先需要从各种来源收集原始数据。 2. **数据清洗**:对采集到的数据进行预处理,去除无效或冗余信息。 3. **数据索引**:将...

    elasticsearch-2.4.3.zip

    Elasticsearch是一个开源的全文搜索引擎,它以分布式、RESTful接口和实时性为特点,被广泛应用于数据分析和日志聚合。版本2.4.3是它的一个稳定版本,提供了高效且可扩展的搜索、分析和数据存储功能。下面将详细阐述...

    elasticsearch-6.5.3.zip

    Elasticsearch是一个开源的全文搜索引擎,它以分布式、RESTful接口和实时性为特点,被广泛应用于数据分析和信息检索。这个“elasticsearch-6.5.3.zip”压缩包包含了Elasticsearch 6.5.3版本的所有组件和资源,方便...

    Elasticsearch安装手册

    **Elasticsearch**是一款高度可扩展的开源全文搜索引擎,其主要特点在于能够快速存储、检索以及分析大规模的数据集。通常情况下,Elasticsearch被用作后端服务,为那些需要进行复杂查询的应用程序提供支持。作为一个...

    elasticsearch-kopf-2.1.2.zip

    Elasticsearch(ES)是一个广泛使用的开源全文搜索引擎,具有分布式、实时、可扩展的特点。在管理和监控ES集群时,开发者和管理员经常需要借助各种工具来提高效率。Kopf就是这样一款针对Elasticsearch 2.x版本的管理...

    阿里云 专有云企业版 V3.8.1 Elasticsearch 用户指南 20190910

    Elasticsearch概述部分对Elasticsearch的基本概念和架构进行了介绍,包括Elasticsearch的定义、特点、架构组件、数据处理流程等内容。 规划与准备部分对Elasticsearch的规划和准备工作进行了介绍,包括规划Elastic...

    资源前后端分离式分布式微服务架构项目课程发布ElasticSearch讲义+源码+视频

    - **理解倒排索引结构**:掌握ElasticSearch中的数据存储方式及如何通过倒排索引来提高搜索效率。 - **理解ElasticSearch的RESTful应用方法**:学会如何通过HTTP请求来操作ElasticSearch中的数据。 #### 三、...

    elasticsearch.docx

    Elasticsearch 设计的核心之一在于其分布式的架构,能够高效地处理大规模数据的实时搜索需求。它通过将数据分散到多个节点上来实现这一目标,每个节点负责一部分数据的存储与处理。此外,Elasticsearch 还采用了分片...

Global site tag (gtag.js) - Google Analytics