前言
最近要将数据从es5集群迁移到es7集群上,结果遇到了一些错误,这里记录并整理一下。
代码修改
type
类型修改
es7 集群默认只有一个type
名字是_doc
创建索引代码如下:
def create_index(index):
print("开始创建索引")
es.indices.create(index=index, body=mappings)
print("创建索引成功")
mapping 如下:
mappings = {
"mappings": {
"_doc" {
"properties": {
"queryId": {
"type": "keyword"
},
"clientTransactionSupport": {
"type": "boolean"
},
"proxyuser": {
"type": "keyword"
},
"source": {
"type": "keyword"
},
"catalog": {
"type": "keyword"
},
"schema": {
"type": "keyword"
}
}
}
}
}
报错内容
cannot be nested under a type [_doc] unless include_type_name is set to true.
报错原因
这个异常是说不能在type类型上创建映射 , 在es7中已经在内部取消了, type。 只不过还保留着基本的语法留着过度,因此需要改成这下面这种方法,把索引下面的类型去掉。
mapping如下:
mappings = {
"mappings": {
"properties": {
"queryId": {
"type": "keyword"
},
"clientTransactionSupport": {
"type": "boolean"
},
"proxyuser": {
"type": "keyword"
},
"source": {
"type": "keyword"
},
"catalog": {
"type": "keyword"
},
"schema": {
"type": "keyword"
}
}
}
}
问题解决!