为什么要进行数据迁移,常用场景:
新建索引 gulimall_product
,因为老索引 product
的映射规则的 attrs属性类型是doc_value=false
,代表不可以进行aggs聚合
操作,要想实现聚合操作,必须新建索引规则,doc_value=true默认为true,然后将老索引中的数据迁移到新索引中即可
1、新建索引映射规则
PUT gulimall_product
{
"mappings": {
"properties": {
"attrs": {
"type": "nested",
"properties": {
"attrId": {
"type": "long"
},
"attrName": {
"type": "keyword"
},
"attrValue": {
"type": "keyword"
}
}
},
"brandId": {
"type": "long"
},
"brandImg": {
"type": "keyword"
},
"brandName": {
"type": "keyword"
},
"catalogId": {
"type": "long"
},
"catalogName": {
"type": "keyword"
},
"catelogId": {
"type": "long"
},
"hasStock": {
"type": "boolean"
},
"hosStock": {
"type": "boolean"
},
"hotScore": {
"type": "long"
},
"saleCount": {
"type": "long"
},
"skuId": {
"type": "long"
},
"skuImg": {
"type": "keyword"
},
"skuPrice": {
"type": "keyword"
},
"skuTitle": {
"type": "text",
"analyzer": "ik_smart"
},
"spuId": {
"type": "long"
}
}
}
}
2、数据迁移
将旧索引product的数据迁移到新索引中
POST _reindex
{
"source": {
"index": "product"
},
"dest": {
"index": "gulimall_product"
}
}
3、查询新索引
#新索引中已迁移了老索引中的数据
#GET gulimall_product/_search
{
"took" : 0,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {<-->}
}