当使用Elasticsearch(ES)添加字段时,通常会涉及到更新已有索引的映射(mapping),以确保新字段能够被正确地索引和搜索。下面是如何通过ES的API来更新索引映射并添加一个新字段的详细步骤:
首先,确保你要更新映射的索引已经存在。如果索引不存在,你需要先创建索引。
1 |
PUT /yuanmei_images |
使用PUT请求来更新索引的映射。假设现在要给yuanmei_images索引添加一个名为versionId的新字段,类型为long。这可以通过以下方式完成:
1 2 3 4 5 6 7 8 |
PUT /yuanmei_images/_mapping { "properties": { "versionId": { "type": "long" } } } |
在上面的请求中:
发送上述请求后,Elasticsearch会返回一个确认消息,告知映射已成功更新。你可以根据返回的响应来验证是否添加字段的操作已经生效。
假设你有一个图像索引yuanmei_images,原本只包含图像的基本信息,如路径、创建日期等。现在,你想要添加一个字段来记录每个图像的版本号(versionId)。通过上述步骤,你可以轻松地将新字段添加到现有的Elasticsearch索引中,以便更好地管理和分析数据。
这种能力使得Elasticsearch成为处理大量文档和复杂数据结构的理想选择,无论是对于实时搜索、分析还是日志处理。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
{ "audit_demo": { "mappings": { "_doc": { "properties": { "full_name": { "type": "text", "analyzer": "ik_max_word" }, "short_name": { "type": "keyword" } } } } } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
{ "audit_demo_bak": { "mappings": { "_doc": { "properties": { "full_name": { "type": "text", "analyzer": "ik_max_word" } } } } } } |
1 2 3 4 5 6 7 8 9 10 |
POST /audit_demo/_update_by_query { "script": { "lang": "painless", "inline": "ctx._source.remove(\"short_name\")" }, "query": { "match_all": {} } } |
注意:
只是删除数据,不是删除字段
如果不删除字段数据,后面reindex时依然会把待删除字段的值带到新索引,即使设置新索引的dynamic为false