elasticsearch索引如何删除字段
有两种方法可以删除 Elasticsearch 索引中的字段。
1. 通过 mapping 更新
您可以使用 Mapping API 更新索引映射并删除字段。以下是删除字段的步骤:
您可以使用 Mapping API 更新索引映射并删除字段。以下是删除字段的步骤:
1. 通过
2. 编辑映射,删除要删除的字段。
3. 将更新的映射传回 Elasticsearch,使用以下请求
GET /your-index/_mapping
获取当前的索引映射。2. 编辑映射,删除要删除的字段。
3. 将更新的映射传回 Elasticsearch,使用以下请求
PUT /your-index/_mapping
。例如,如果您要从名为 my-index
的索引中删除 age
字段,可以执行以下操作:* 获取当前映射:GET /my-index/_mapping
* 编辑映射并删除
age
字段:{ "properties": { "name": { "type": "text" }, "gender": { "type": "keyword" } } }
* 更新映射:
PUT /my-index/_mapping { "properties": { "name": { "type": "text" }, "gender": { "type": "keyword" } } }
二 通过 Reindex
您还可以使用 Reindex API 复制索引并排除要删除的字段。以下是删除字段的步骤:1. 创建一个新索引,使用与当前索引相同的设置和映射。
2. 使用 Reindex API 将当前索引中的所有文档复制到新索引中,排除要删除的字段。
3. 删除原始索引并将新索引重命名为原始索引的名称。例如,如果您要从名为
2. 使用 Reindex API 将当前索引中的所有文档复制到新索引中,排除要删除的字段。
3. 删除原始索引并将新索引重命名为原始索引的名称。例如,如果您要从名为
my-index
的索引中删除 age
字段,可以执行以下操作:* 创建新索引:PUT /my-new-index { "settings": { ... }, "mappings": { ... } }
* 使用 Reindex API 将数据从旧索引复制到新索引,排除
age
字段:POST /_reindex { "source": { "index": "my-index" }, "dest": { "index": "my-new-index" }, "script": { "source": "ctx._source.remove('age')" } }
* 删除原始索引:
DELETE /my-index
* 将新索引重命名为原始索引的名称:
POST /_reindex { "source": { "index": "my-new-index" }, "dest": { "index": "my-index" }, "conflicts": "proceed" } DELETE /my-new-index