Elasticsearch 的索引操作包括创建索引、查看索引、更新索引、删除索引、索引文档以及索引维护等多个方面。以下是对这些操作的详细说明:
1. 创建索引
在 Elasticsearch 中,索引是存储相关文档的地方,类似于关系型数据库中的数据库或表。创建索引时,可以定义索引的映射(mapping)和设置(settings)。
使用 REST API 创建索引:
通过发送一个 HTTP PUT
请求到 Elasticsearch 服务器的特定索引 URL 来创建索引。请求体中可以包含索引的映射和设置。
PUT /my_index
{
"settings": {
"number_of_shards": 1,
"number_of_replicas": 1
},
"mappings": {
"properties": {
"field1": { "type": "text" },
"field2": { "type": "integer" }
}
}
}
注意:从 Elasticsearch 7.x 开始,不再推荐在创建索引时直接指定字段映射,而是使用动态映射或预先定义的模板。
2. 查看索引
列出所有索引:
使用 GET
请求查询 _cat/indices
端点,可以列出集群中所有的索引。
GET /_cat/indices
查看索引详情:
通过 GET
请求加上索引名可以查看特定索引的详细信息,包括其映射和设置。
GET /my_index
3. 更新索引
更新索引通常指的是更新索引的设置(如分片数、副本数)或重新映射字段。但需要注意,直接修改已存在字段的映射类型通常是不允许的,因为这会影响索引的内部结构。
更新索引设置:
使用 PUT
请求并包含要更新的设置部分。
PUT /my_index/_settings
{
"number_of_replicas": 2
}
4. 删除索引
删除索引:
使用 DELETE
请求加上索引名来删除指定的索引。
DELETE /my_index
5. 索引文档
虽然这不是直接对索引本身的操作,但在 Elasticsearch 中,索引文档是将文档添加到索引中的过程。
索引(添加)文档:
使用 POST
请求向指定索引的 _doc
端点发送 JSON 格式的文档数据。
POST /my_index/_doc
{
"field1": "value1",
"field2": 123
}
如果你知道文档的 ID,也可以在 URL 中指定它。
PUT /my_index/_doc/1
{
"field1": "value1",
"field2": 123
}
6. 索引维护
Elasticsearch 提供了索引维护功能,如优化(optimize)、清理(purge)、刷新(refresh)等。这些操作通常用于管理索引的性能和存储效率。
优化索引:
虽然 Elasticsearch 会自动管理索引的合并和压缩,但在某些情况下,你可能需要手动触发索引的优化过程。不过,从 Elasticsearch 2.x 开始,_optimize
API 的使用已经变得不再必要,因为 Elasticsearch 的后台合并机制已经足够高效。
刷新索引:
使用 _refresh
API 可以手动触发索引的刷新操作,使最近的更改对搜索可见。这在测试或开发环境中可能很有用,但在生产环境中通常不推荐这样做,因为它会影响性能。
POST /my_index/_refresh
总结
Elasticsearch 的索引操作涵盖了创建、查看、更新、删除和维护等多个方面。随着 Elasticsearch 版本的更新,某些操作和 API 可能会发生变化。因此,建议在使用时查阅你所使用的 Elasticsearch 版本的官方文档以获取最准确的信息。