Jupyter AI

9 Elasticsearch 数据搜索引擎教程系列之基础概念之文档结构

📅 发表日期: 2024年8月15日

分类: 🔍Elasticsearch 入门

👁️阅读: --

在上一篇文章中,我们讨论了 索引类型 的基础概念。接下来,我们将深入探讨索引内部的基本组成部分——文档 及其 结构。理解文档结构对于操作 Elasticsearch 中的数据至关重要,因为文档是数据的基本单元。

文档的概念

在 Elasticsearch 中,文档 是存储在 索引 中的基本数据记录。每个文档都以 JSON 格式存储,并且包含与该条数据相关的字段及其值。文档对应于关系数据库中的“行”。

文档的属性

每个文档都有以下几个关键特性:

  • ID:每个文档都有一个唯一的标识符,称为文档 ID。可以由 Elasticsearch 自动生成,或由用户自定义。
  • 类型:在早期版本的 Elasticsearch 中,文档类型用于将相似文档分组。然而,随着版本的更新,已被推荐使用单个索引及相同类型的文档。
  • 字段:文档由多个 字段 组成,每个字段代表一个数据项。字段具有名称和对应的值,值可以是多种类型,例如字符串、数字、布尔值、数组、对象等。
  • 映射:映射是文档字段的结构定义和设置,包括字段类型、分析器等。它定义了如何将数据存储、索引和搜索。

文档结构示例

下面是一个简单的文档示例,假设我们在管理一个图书馆的书籍信息:

{
  "title": "Elasticsearch: The Definitive Guide",
  "author": "Clinton Gormley",
  "published_year": 2015,
  "genres": ["Technology", "Programming"],
  "available": true
}

在这个示例中,我们的文档包含了五个字段:

  • title:书名,字符串类型
  • author:作者,字符串类型
  • published_year:出版年份,整数类型
  • genres:书籍类型,数组类型
  • available:是否可用,布尔类型

文档与索引的关系

每个文档都必须属于一个索引。在 Elasticsearch 中,一个索引可以包含多个文档,文档之间可以有不同的字段。在创建索引时,可以定义映射,以确保正确存储和检索数据。

例如,创建一个名为 books 的索引,可以定义如下的映射:

PUT /books
{
  "mappings": {
    "properties": {
      "title": {
        "type": "text"
      },
      "author": {
        "type": "text"
      },
      "published_year": {
        "type": "integer"
      },
      "genres": {
        "type": "keyword"
      },
      "available": {
        "type": "boolean"
      }
    }
  }
}

在上面的示例中,我们定义了一个包含 title, author, published_year, genres, 和 available 字段的 books 索引。这些映射定义了每个字段的数据类型,从而确保 Elasticsearch 以适当的方式处理这些数据。

文档的存储与检索

在 Elasticsearch 中,文档是以 JSON 格式存储在索引中。用户可以通过 RESTful API 发送 HTTP 请求来进行文档的创建、更新、删除和检索操作。

例如,添加一个新的书籍文档,可以使用如下的 HTTP PUT 请求:

PUT /books/_doc/1
{
  "title": "Elasticsearch: The Definitive Guide",
  "author": "Clinton Gormley",
  "published_year": 2015,
  "genres": ["Technology", "Programming"],
  "available": true
}

通过这个请求,我们将一条书籍数据添加到 books 索引中,文档 ID 为 1

接下来,我们可以使用 GET 请求检索文档:

GET /books/_doc/1

小结

本文介绍了 文档 作为 Elasticsearch 中的数据基本单元,以及其结构和与索引的关系。理解文档结构有助于我们在 Elasticsearch 中更有效地存储和检索数据。接下来的文章,我们将继续深入 Elasticsearch 的操作,探讨如何创建和管理索引及其文档。

🔍Elasticsearch 入门 (滚动鼠标查看)