ElasticSearch跨集群跨版本迁移(5.5到7.2) 作者: admin 时间: 2020-04-07 分类: 默认分类 ##5.5与7.2的差异 1. 7.x版本不可再自定义type ,默认的type为`_doc` 如搜索 `index/_doc/_search` 不加也可`index/_search`,type会在8.X版本彻底移除。 2. 时间格式严格匹配 2020-4-3 11:36:21 => 2020-04-03 11:36:23 正确的 ```json "range":{ "created_at":{ "gte":"2020-04-03 00:00:00" } } ``` 错误的 ```json "range":{ "created_at":{ "gte":"2020-4-3 00:00:00" } } ``` 3. 7.x版本默认只创建一个分片,5.x是5个分片 4. 5.x版本在yml中设置索引的默认分词器,7.x版本只在创建索引时指定或索引被close时修改默认分词器 ```json PUT /school_index { "settings" : { "index" : { "analysis.analyzer.default.type": "ik_max_word" } } } ``` ```php [ 'constant_score' => [ 'filter' => [ 'query_string' => [ 'default_field' => $field, 'query' => $keyword, 'default_operator' => $operator, 'analyzer' => 'ik_smart' //若不指定默认分词器,在query_string时需指定要用到的分词器 ] ] ] ]; ``` 5. constant_score中不再支持query 只能使用 filter 6. 7.x不再返回记录的具体条目数,条目数超过10000显示10000,在body中指定`"track_total_hits" => true` 可返回具体条目数,也可设置为一个上限,超过显示为上限 7. 7.x版本不再支持Boolean类型的字段以0,1查询 ##迁移前的准备 #####因5.5字段格式校验不严格,使用reindex迁移升级有很大的风险,所以数据采用全量同步的方式进行。 源ES集群(5.5) 目标ES集群(7.2) 全量同步脚本 使用ES7api的分支 存储变更数据的服务如 队列/数据库 等(存储增量数据服务) 增量同步脚本 ## 迁移过程 1. 上线双写ES数据,一份正常写入,一份阻塞在存储增量数据服务中 2. 启动全量同步脚本 等待同步结束 3. 同步结束后 合并ES7分支,切换集群,上线 4. 启动增量同步脚本 等待同步结束 5. 迁移结束 进行测试 标签: 匹配, 测试, 格式, true, type, keyword, o
嘤嘤嘤 快点写