es字段修改
1 #查看现有mapping结构
GET /索引名称/_mapping
2 #在已有的索引上新增新字段
PUT /索引名称/_mapping
{
"properties": {
"字段名1": {
"type": "keyword",
"ignore_above":256
},
"字段名2": {
"index" : false,
"type": "keyword",
"ignore_above":256
},
"字段名3": {
"index" : false,
"type": "keyword",
"ignore_above":256
}
}
}
本来是很简单的事情,但因为没有增加字段,就同步了文档,导致会自动创建字段,字段类型为text,而非keyword类型,具体mapping查询时如下:
"字段1" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
}
es删除字段比较麻烦,因为是倒排索引
需要现将文档内容的字段删除,在创建索引,迁移索引
POST /dev_ywx_order_c0/_update_by_query?wait_for_completion=false
{
"script": {
"source": "ctx._source.remove(\"字段名1\")",
"lang": "painless"
}
}
-----这个只是删除了文档的字段,并没有改变文档的类型。
GET /_tasks/UUnR_z_YQXaGPqvyyKwYqg:527285742 查看上面任务的执行进度。
创建临时索引索引,包含keyword类型的新字段!
PUT /my_temp_index
{
"settings":{}
"mappings":{}
}
从原索引迁移数据到临时索引
POST /_reindex?wait_for_completion=false
{
"source": {
"index": "原索引"
}
,
"dest": {
"index": "my_temp_index"
}
}
删除原索引
DELETE /元索引名
以新mapping结构创建原索引
同上面my_temp_index创建
再reindex后,删除temp索引