Elasticsearch索引和文档

目录

  • 一、索引(Index)
    • 1. 命名与唯一性
    • 2. 多分片架构
    • 3. 副本(Replicas)
    • 4. 映射(Mapping)
    • 5. 元数据与设置
    • 6. 操作
  • 二、文档(Document)
    • 1. JSON格式
    • 2. 唯一标识
    • 3. 索引过程
    • 4. 更新与替换
    • 5. 删除
  • 三、关系与交互
  • 四、命令行操作

一、索引(Index)

索引在Elasticsearch中扮演着类似关系型数据库中数据库的角色,它是数据存储的逻辑容器,用于组织和管理具有相似特性的文档集合。索引具有以下关键特性:

1. 命名与唯一性

每个索引都有一个唯一的名称(通常是小写字母),用于标识和区分不同的数据集。索引名称在集群范围内必须是唯一的。

2. 多分片架构

索引可以被水平分割成多个分片(Shard),每个分片都是一个独立的Lucene索引,可以分布到集群中的不同节点上。分片提供了水平扩展能力,使得索引能够处理海量数据和高并发查询。

3. 副本(Replicas)

索引可以配置副本数,每个分片都可以有零个或多个副本。副本是主分片数据的完整拷贝,用于数据冗余、高可用性和负载均衡。在主分片故障时,其对应的副本可以提升为主分片,确保数据的持续可用。

4. 映射(Mapping)

映射定义了索引中字段的数据类型、分析器设置、是否存储、是否分词等属性。映射决定了文档数据如何被索引、检索以及如何在搜索结果中呈现。映射可以在创建索引时预先定义,也可以随着文档的索引过程动态推断。

5. 元数据与设置

索引包含元数据信息,如索引的创建时间、主分片和副本数量、映射定义等。此外,索引还有相关的设置(Settings),如分片分配策略、刷新间隔、分析器配置等,用于调整索引的行为和性能。

6. 操作

对索引的操作包括创建、删除、更新映射、获取元数据与设置、刷新、优化等。这些操作通常通过Elasticsearch提供的RESTful API进行。

二、文档(Document)

文档是Elasticsearch中存储和检索的基本数据单元,代表一个具体的、独立的数据对象,如一篇文章、一个产品详情、一条用户记录等。文档具有以下特点:

1. JSON格式

文档以JSON(JavaScript Object Notation)格式表示,这是一种轻量级、易于人阅读和机器解析的数据交换格式。JSON文档包含一系列键值对(Key-Value pairs),键是字符串,值可以是各种数据类型(如字符串、数字、布尔值、数组、嵌套对象等)。

2. 唯一标识

每个文档在索引内都有一个唯一的标识符,即_id字段。用户可以自定义文档ID,也可以让Elasticsearch在索引文档时自动生成一个UUID。

3. 索引过程

文档通过索引操作(PUTPOST请求)被添加到指定索引中。在索引过程中,文档数据会根据映射定义进行分析、转换,并最终存储到相应的分片中。

4. 更新与替换

文档可以被更新(部分字段修改)或替换(整个文档替换)。更新实际上是删除原文档并创建一个新文档的过程,而替换则直接用新文档覆盖原有文档。更新或替换后,文档的新版本在下一次刷新后对搜索可见。

5. 删除

文档可以通过DELETE请求从索引中移除。删除操作不会立即从硬盘上删除数据,而是标记为已删除,实际空间回收将在后续的段合并过程中完成。

三、关系与交互

  • 索引与文档的关系:一个索引可以包含任意数量的文档,文档必须归属于某个索引。文档通过其所在的索引和自身的_id在Elasticsearch中被唯一标识和定位。

  • 操作与生命周期:索引和文档的操作(如创建、更新、删除)都是通过Elasticsearch的RESTful API进行。文档的生命周期始于索引操作,期间可能经历多次更新,最终以删除操作结束。

Elasticsearch是一个高度可扩展的分布式全文搜索引擎,其核心概念包括索引(Index)、文档(Document)以及它们之间的关系与操作。以下是对Elasticsearch索引和文档的全面解析&#x

你可能感兴趣的:(elasticsearch,elasticsearch)