2 回答

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超5個(gè)贊
result = {}
for cluster_name, data in a.items():
type_data = {key: {'type': type(value).__name__} for key, value in data.items()}
result[cluster_name] = type_data
mapping = {"mapping": {"properties": result}}
因此,提供的數(shù)據(jù)的輸出將是:
{
"mapping":{
"properties": {
"test.mydomain_1.xyz:1019": {
"infoAddr": {"type": "str"},
"usedSpace": {"type": "int"},
"capacity": {"type": "int"},
"version": {"type": "str"},
"used": {"type": "int"},
"remaining": {"type": "int"},
"volfails": {"type": "int"}},
"test.mydomain_2.xyz:1019": {
"infoAddr": {"type": "str"},
"usedSpace": {"type": "int"},
"capacity": {"type": "int"},
"version": {"type": "str"},
"used": {"type": "int"},
"remaining": {"type": "int"},
"volfails": {"type": "int"}
}
}
}
}

TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超5個(gè)贊
如果您想將該源從彈性搜索日志映射到特定形式,我們打算在您在帖子中顯示的 dict 映射中,通常,您需要?jiǎng)?chuàng)建某種形式的遞歸訪問(wèn)者,以便能夠?qū)⑵溆糜诰哂腥我馇短椎?dicts 和如果可以應(yīng)用映射,則有關(guān)字段類(lèi)型的信息。
例如,您可以創(chuàng)建某種函數(shù),如下所示:
def visit(data):
data_mapping = {}
for data_key, data_value in data.items():
if isinstance(data_value,dict):
if data_key not in data_mapping:
data_mapping[data_key] = {'properties': {}}
data_mapping[data_key]['properties'] = visit(data_value)
else:
data_mapping[data_key] = {
'type': data_value.__class__.__name__
}
return data_mapping
接下來(lái),調(diào)用 elasticsearch 日志字典上的函數(shù):
mapping = visit(data)
mapping = {'mapping': { 'properties': mapping}}
因此,輸出將是:
{'mapping': { 'properties': {
'test.mydomain_1.xyz:1019': {
'properties': {
'infoAddr': {'type': 'str'},
'usedSpace': {'type': 'int'},
'capacity': {'type': 'int'},
'version': {'type': 'str'},
'used': {'type': 'int'},
'remaining': {'type': 'int'},
'volfails': {'type': 'int'}
}
},
'test.mydomain_2.xyz:1019': {
'properties': {
'infoAddr': {'type': 'str'},
'usedSpace': {'type': 'int'},
'capacity': {'type': 'int'},
'version': {'type': 'str'},
'used': {'type': 'int'},
'remaining': {'type': 'int'},
'volfails': {'type': 'int'}
}
}}}
添加回答
舉報(bào)