简述Elasticsearch的文档是什么?

参考回答

Elasticsearch 中,文档(Document) 是存储和检索数据的基本单位。它是一个以 JSON 格式 表示的结构化数据,包含字段和对应的值。

  • 文档结构:文档以键值对形式组织,类似关系型数据库中的一行数据。
  • 存储位置:文档被存储在一个索引中,类似于数据库中的表。
  • 标识符:每个文档都有一个唯一的标识符(ID),用于快速定位。

示例文档(一个描述产品的文档):

{
  "id": 1,
  "name": "Laptop",
  "category": "Electronics",
  "price": 1000,
  "in_stock": true
}

详细讲解与拓展

1. 文档的组成

文档由以下几个核心部分组成:
字段(Field)
– 文档中的每个键值对称为字段。
– 字段类型可以是字符串、数字、布尔值、数组、嵌套对象等。
– 示例:

“`json
{
"name": "Laptop", // 字符串
"price": 1000, // 数字
"tags": ["new", "hot"] // 数组
}
“`

  • 元数据
    每个文档还包含一些系统级元数据,比如:

    • _index:文档所属的索引名称。
    • _id:文档的唯一标识符。
    • _version:文档的版本号。
    • _source:文档的完整内容。

2. 文档在 Elasticsearch 中的存储

文档存储在索引(Index)中,索引是文档的集合:
– 每个文档对应一个或多个字段。
– 文档被分配到索引的主分片或副本分片中。


3. 文档的操作

  • 创建文档:将文档存入索引中。
    PUT /products/_doc/1
    {
    "name": "Laptop",
    "price": 1000,
    "in_stock": true
    }
    
  • 获取文档:通过文档的 ID 检索。
    GET /products/_doc/1
    
  • 更新文档:对已有文档进行部分或全部修改。
    POST /products/_update/1
    {
    "doc": {
      "price": 950
    }
    }
    
  • 删除文档:从索引中移除文档。
    DELETE /products/_doc/1
    

4. 文档与关系型数据库的比较

Elasticsearch 文档 关系型数据库
文档(Document) 行(Row)
字段(Field) 列(Column)
索引(Index) 表(Table)
_id(文档唯一标识符) 主键(Primary Key)

5. 文档的灵活性

  • 文档可以有不同的字段,即 无模式(Schema-less)
    • 不同文档可以有不同的字段。
    • 例如:
    {
      "name": "Laptop",
      "price": 1000
    }
    
    {
      "name": "Smartphone",
      "price": 700,
      "brand": "ABC"
    }
    
  • 但为了更高效的索引和查询,可以使用 Mapping 定义字段结构和类型。


总结

Elasticsearch 的文档是以 JSON 格式存储的结构化数据,包含字段和值,类似关系型数据库中的一行。文档是 Elasticsearch 的核心数据单位,可存储、检索、更新或删除。与关系型数据库相比,文档具有灵活性,支持多种字段类型和嵌套数据结构。理解文档是掌握 Elasticsearch 的基础。

发表评论

后才能评论