注:以下操作是在Kibana的“开发工具”中完成,既然了解elasticsearch就默认大家会“elasticsearch的界面”Kibana了
操作环境:Elasticsearch6.8.4、Kibana6.8.4
效果:数据迁移、重建索引
适用场景:需要修改索引mapping(例:给一个已存在的字段添加fields字段)
创建测试索引
PUT my_test_index
{
"mappings": {
"_doc": {
"properties": {
"name": {
"type": "text",
"analyzer": "ik_max_word",
"search_analyzer": "ik_smart"
}
}
}
}
}
响应结果:
{
"acknowledged" : true,
"shards_acknowledged" : true,
"index" : "my_test_index"
}
添加测试数据
POST my_test_index/_doc
{
"name": "测试名称"
}
响应数据:
{
"_index" : "my_test_index",
"_type" : "_doc",
"_id" : "FbKPJX8BZcfHsby67U_y",
"_version" : 1,
"result" : "created",
"_shards" : {
"total" : 2,
"successful" : 2,
"failed" : 0
},
"_seq_no" : 0,
"_primary_term" : 1
}
创建新的索引
PUT my_test_reindex
{
"mappings": {
"_doc": {
"properties": {
"name": {
"type": "text",
"analyzer": "ik_max_word",
"search_analyzer": "ik_smart",
"fields": {
"keyword": {
"type": "keyword"
}
}
}
}
}
}
}
响应数据:
{
"acknowledged" : true,
"shards_acknowledged" : true,
"index" : "my_test_reindex"
}
重建到新索引 - Simple
注意点:
1.重建索引前一定要先创建目标索引并设置好mapping,因为自动创建的索引和源索引是不一样的
2.这种是最简单直接的方法,网上看的优化参数之类的不熟悉的建议不用(例:天坑routing=cat)
POST _reindex
{
"source": {
"index": "my_test_index"
},
"dest": {
"index": "my_test_reindex"
}
}
响应数据:
{
"took" : 18,
"timed_out" : false,
"total" : 1,
"updated" : 0,
"created" : 1,
"deleted" : 0,
"batches" : 1,
"version_conflicts" : 0,
"noops" : 0,
"retries" : {
"bulk" : 0,
"search" : 0
},
"throttled_millis" : 0,
"requests_per_second" : -1.0,
"throttled_until_millis" : 0,
"failures" : [ ]
}
重建到新索引 - More
这里只列出了常用参数,优化的参数不了解的不建议使用
POST _reindex
{
"source": {
"index": "my_test_index",
"size": 1000,//批量处理条数(可选),默认1000,迁移速度慢可以调整此参数,每批5-15M之间为佳
"query": {
},//查询条件(可选),和查询语法一样,可以只查询部分数据迁移到新的索引
},
"dest": {
"index": "my_test_reindex",
"op_type": "create",//操作类型(可选),当值为create时,只有目标索引中不存在的文档才会被创建,文档冲突不更新
"version_type": "internal",//版本类型(可选),可选值external | internal(默认),internal:源索引所有文档创建覆盖,external:源索引文档在目标文档不存在时候创建,源索引文档版本低于目标文档版本时候不更新,高则更新
}
}



