索引的settings/mappings变化了,需要重建索引,要求不影响业务(不停机更新)

1.更新索引模板配置使用新的settings/mappings

1. 删旧的索引模板配置(可选)

DELETE _template/b2b_third_merchandise

2. 使用新的模板配置覆盖旧的配置

PUT _template/b2b_third_merchandise
{
  模板配置JSon内容 (b2b_third_web\doc\v1.11.0-es-template.json)
}

3. 检查索引模板配置是否更新成功

GET _template/b2b_third_merchandise

2.重建新的索引

1. 查看旧索引名称,得到新索引名称

GET /b2b-third-merchandise-hubei/_search
---> 返回
{
  "took": 1,
  "timed_out": false,
  "_shards": {
    "total": 6,
    "successful": 6,
    "failed": 0
  },
  "hits": {
    "total": 119624,
    "max_score": 1,
    "hits": [
      {
        "_index": "b2b-third-merchandise-hubei-rawv1",
        "_type": "merchandise",
        "_id": "9000000013423",
        ...
      }
      ...
    ]
  }
  ...
}

其中索引名称"_index": "b2b-third-merchandise-hubei-rawv1",注意索引后缀名xxxxx-rawv(n) n为对应版本号 例如旧版本为1 新版本为2,所以新的索引名称是: b2b-third-merchandise-hubei-rawv2

2. 创建新索引

PUT b2b-third-merchandise-hubei-rawv2

注意:因为索引模板已经更新,所以当前创建的索引会使用新的索引配置的创建

2. 使用_reindex命令重建索引数据,把旧的索引数据拷贝到新的索引中去

POST _reindex
{
  "source": {
    "index": "b2b-third-merchandise-hubei-rawv1"
  },
  "dest": {
    "index": "b2b-third-merchandise-hubei-rawv2"
  }
}

其中source是旧的索引名称,dest是刚刚创建的新的索引名称

3. 等待重建索引完成

GET /b2b-third-merchandise-hubei-rawv2/_search

当返回的"total": 119624与旧索引数据量相同的时候,表示重建索引完成了

3.切换索引别名使用新的索引(更新索引别名)

1. 更新索引别名

POST _aliases
{
  "actions": [
    {
      "remove": {
        "index": "b2b-third-merchandise-hubei-rawv1",
        "alias": "b2b-third-merchandise-hubei"
      }
    },
    {
      "add": {
        "index": "b2b-third-merchandise-hubei-rawv2",
        "alias": "b2b-third-merchandise-hubei"
      }
    }
  ]
}

2. 确认索引别名生效了

GET /b2b-third-merchandise-hubei/_search

返回的"_index"值是新的索引名称(b2b-third-merchandise-hubei-rawv2)就表示索引别名生效了

4.执行全量数据更新新建的索引数据

1. 确保同步方案已经部署完成

2. 执行新的全量同步方案,更新新索引数据

Rabbit MQ 队列名称 发送消息
jdbc-third-common-queue {“job_name”:”全量三方搜索数据同步”}
jdbc-third-common-will-queue {“job_name”:”三方商品标签活动搜索数据同步”}
jdbc-third-common-will-queue {“job_name”:”三方指定商品活动搜索数据同步”}
jdbc-third-common-will-queue {“job_name”:”三方客户购买历史记录数据同步”}

注意: 必须等待全量三方搜索数据同步同步方案执行完成之后才同步后面3个同步方案

5.删除老的索引数据

必须确保新的索引没有问题,能正常工作才可删除老索引

DELETE /b2b-third-merchandise-hubei-rawv1
文档更新时间: 2019-09-29 17:29   作者:lizw