kibana重建es索引报错request body is required
问题背景
业务需要把mysql的数据同步到es,用es来查。公司用于同步mysql和es的组件,在mysql表新增字段时会对同步的es索引新增字段,但新增的字段类型可能不是我们想要的,因为es不支持索引字段类型的修改和删除,这时就需要重建es索引。这里的重建索引简单说就是新建一个字段正确的新索引,把旧索引的数据同步到新索引中,再把旧索引删除,最后对新索引设置别名为旧索引名。
在业务上线前用kibana重建索引,执行
POST _reindex
{
"source": {
"index": "old_index"
},
"dest": {
"index": "new_index"
},
"conflicts": "proceed"
}
这条命令在测试环境执行时正常,但线上环境执行时报错:
解决方式
用curl在线上环境的容器里执行上述的重建索引命令,重建索引的curl命令可以用kibana生成
https://discuss.elastic.co/t/reindex-fails-in-kibana-devtools-console-but-succeeds-on-command-line-using-curl/237266
原因可能是线上环境数据量较大,es社区有一些类似的讨论,是kibana的问题