MySQL表结构转换为ES索引Mapping
warning:
这篇文章距离上次修改已过190天,其中的内容可能已经有所变动。
import json
# 假设这是从MySQL表结构中获取的数据
mysql_table_columns = {
'id': {'type': 'int', 'primary_key': True},
'name': {'type': 'string', 'index': True},
'email': {'type': 'string', 'index': True},
'age': {'type': 'int'},
'birthday': {'type': 'date'},
}
# 转换函数
def convert_mysql_column_to_es_mapping(column_info):
es_mapping = {'type': column_info['type']}
if column_info.get('primary_key'):
es_mapping['ignore_malformed'] = true
es_mapping['index'] = false
if column_info.get('index'):
es_mapping['index'] = true
return es_mapping
# 生成整个ES映射
def generate_es_mapping(mysql_table_columns):
es_mapping = {}
for column_name, column_info in mysql_table_columns.items():
es_mapping[column_name] = convert_mysql_column_to_es_mapping(column_info)
return es_mapping
# 打印JSON格式的ES映射
es_mapping_json = json.dumps(generate_es_mapping(mysql_table_columns), indent=2)
print(es_mapping_json)
这段代码首先定义了一个模拟的MySQL表列信息字典,然后定义了一个转换函数convert_mysql_column_to_es_mapping
,它根据MySQL列的信息生成对应的Elasticsearch映射。接着定义了一个函数generate_es_mapping
,它遍历整个列信息字典,并生成整个Elasticsearch映射。最后,使用json.dumps
将生成的映射转换为JSON格式,并以美化的形式打印输出。
评论已关闭