Elasticsearch 文档操作
Elasticsearch 是一个分布式搜索引擎,广泛用于全文搜索、日志分析和实时数据分析。在 Elasticsearch 中,文档(Document)是最基本的数据单元,类似于关系型数据库中的一行记录。本文将详细介绍如何在 Elasticsearch 中进行文档的创建、读取、更新和删除操作。
1. 文档的基本概念
在 Elasticsearch 中,文档是以 JSON 格式存储的数据。每个文档都有一个唯一的 ID,并且属于某个索引(Index)和类型(Type)。虽然 Elasticsearch 7.x 及更高版本中已经移除了类型的概念,但为了兼容性,我们仍然可以在某些上下文中看到它的使用。
备注
Elasticsearch 7.x 及更高版本中,类型(Type)已被弃用,建议将所有文档存储在同一个类型下。
2. 创建文档
在 Elasticsearch 中,创建文档可以通过 PUT
或 POST
请求来实现。PUT
请求需要指定文档的 ID,而 POST
请求则由 Elasticsearch 自动生成 ID。
使用 PUT
创建文档
PUT /my_index/_doc/1
{
"name": "John Doe",
"age": 30,
"email": "[email protected]"
}
响应:
{
"_index": "my_index",
"_type": "_doc",
"_id": "1",
"_version": 1,
"result": "created",
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"_seq_no": 0,
"_primary_term": 1
}
使用 POST
创建文档
POST /my_index/_doc/
{
"name": "Jane Doe",
"age": 25,
"email": "[email protected]"
}
响应:
{
"_index": "my_index",
"_type": "_doc",
"_id": "2", // 自动生成的 ID
"_version": 1,
"result": "created",
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"_seq_no": 1,
"_primary_term": 1
}
提示
如果你不确定文档的 ID,可以使用 POST
请求,Elasticsearch 会自动生成一个唯一的 ID。
3. 读取文档
读取文档是通过 GET
请求来实现的。你需要指定文档的索引和 ID。
GET /my_index/_doc/1
响应:
{
"_index": "my_index",
"_type": "_doc",
"_id": "1",
"_version": 1,
"_seq_no": 0,
"_primary_term": 1,
"found": true,
"_source": {
"name": "John Doe",
"age": 30,
"email": "[email protected]"
}
}
警告
如果文档不存在,Elasticsearch 会返回 found: false
。
4. 更新文档
更新文档可以通过 POST
或 PUT
请求来实现。POST
请求通常用于部分更新,而 PUT
请求用于完全替换文档。