网站一般做几页,湖北手机版建站系统信息,建网站带app多少投资,全网维护如果不允许修改索引字段类型#xff0c;只能重建索引
步骤
新建一个索引数据迁移删除旧索引别名引用 目录 1、准备工作1.1、查看版本号1.2、创建旧索引1.3、添加两条数据1.4、查看数据 2、新建一个索引2.1、查看旧索引的mapping2.2、新建索引 3、数据迁移3.1、使用异步任务迁…如果不允许修改索引字段类型只能重建索引
步骤
新建一个索引数据迁移删除旧索引别名引用 目录 1、准备工作1.1、查看版本号1.2、创建旧索引1.3、添加两条数据1.4、查看数据 2、新建一个索引2.1、查看旧索引的mapping2.2、新建索引 3、数据迁移3.1、使用异步任务迁移数据3.2、查看任务状态 4、删除旧索引4.1、确认索引数据4.2、删除旧索引 5、别名引用5.1、创建别名5.2、查看别名5.3、使用别名 参考文章 1、准备工作
1.1、查看版本号
GET /响应
{name: jxZZibZ,cluster_name: elasticsearch,cluster_uuid: 23IcxgHqTniM4wOGyl03Pw,version: {number: 5.6.16,build_hash: 3a740d1,build_date: 2019-03-13T15:33:36.565Z,build_snapshot: false,lucene_version: 6.6.1},tagline: You Know, for Search
}可以看到我所使用的ES 版本号为5.6.16
1.2、创建旧索引
旧索引名为old-index包含2个字段id、username
PUT /old-index
{mappings: {doc: {properties: {id: {type: integer},username: {type: text}}}}
}响应
{acknowledged: true,shards_acknowledged: true,index: old-index
}1.3、添加两条数据
POST /old-index/doc
{id: 1000,username: root
}POST /old-index/doc
{id: 1001,username: other
}1.4、查看数据
GET /old-index/_search响应
{took: 0,timed_out: false,_shards: {total: 5,successful: 5,skipped: 0,failed: 0},hits: {total: 2,max_score: 1,hits: [{_index: old-index,_type: doc,_id: AY1pDh-BNp3AgKn6mtEj,_score: 1,_source: {id: 1000,username: root}},{_index: old-index,_type: doc,_id: AY1pDikjNp3AgKn6mtEk,_score: 1,_source: {id: 1001,username: other}}]}
}2、新建一个索引
2.1、查看旧索引的mapping
GET /old-index/_mapping响应
{old-index: {mappings: {doc: {properties: {id: {type: integer},username: {type: text}}}}}
}2.2、新建索引
新的索引名为new-reindex将id 字段的类型从integer 改为keyword
PUT /new-reindex
{mappings: {doc: {properties: {id: {type: keyword},username: {type: text}}}}
}3、数据迁移
3.1、使用异步任务迁移数据
POST /_reindex?wait_for_completionfalse
{source: {index: old-index,size: 10000},dest: {index: new-index}
}响应
{task: jxZZibZPQ_mViMJHQyFz5w:7335
}如果数据量较大容易出现 Gateway Time-out 所以我添加了参数wait_for_completionfalse让其后台执行
{statusCode: 504,error: Gateway Time-out,message: Client request timeout
}3.2、查看任务状态
GET /_tasks/jxZZibZPQ_mViMJHQyFz5w:7335{completed: true,task: {node: jxZZibZPQ_mViMJHQyFz5w,id: 7335,type: transport,action: indices:data/write/reindex,status: {total: 2,updated: 0,created: 2,deleted: 0,batches: 1,version_conflicts: 0,noops: 0,retries: {bulk: 0,search: 0},throttled_millis: 0,requests_per_second: -1,throttled_until_millis: 0},description: reindex from [old-index] to [new-index],start_time_in_millis: 1706864890889,running_time_in_nanos: 105811530,cancellable: true},response: {took: 105,timed_out: false,total: 2,updated: 0,created: 2,deleted: 0,batches: 1,version_conflicts: 0,noops: 0,retries: {bulk: 0,search: 0},throttled_millis: 0,requests_per_second: -1,throttled_until_millis: 0,failures: []}
}4、删除旧索引
4.1、确认索引数据
查看新旧索引中的数据总量是否相等
GET /old-index/_countGET /new-index/_count响应
{count: 2,_shards: {total: 5,successful: 5,skipped: 0,failed: 0}
}4.2、删除旧索引
确认数据已迁移完成可以删除旧的索引了
DELETE /old-index响应
{acknowledged: true
}5、别名引用
5.1、创建别名
PUT /new-index/_alias/old-index响应
{acknowledged: true
}5.2、查看别名
GET _cat/aliasesold-index new-index - - -5.3、使用别名
新旧索引都可以使用了 GET /old-index/_searchGET /new-index/_search参考文章
如何在Elasticsearch中改变字段类型