我正在尝试设置一个嵌套对象,以便我可以使用点表示法从我的 Elastic Search 数据库中查询数据,但是,我不相信我的映射属性在插入时首先被正确设置记录,我正在尝试验证我是否真的设置正确:
存储数据
const data = {
mappings: {
properties: {
data: {
type: 'nested'
},
period_from: {
type: 'date',
format: 'yyyy-MM-dd HH:mm:ss',
fielddata: true
},
period_to: {
type: 'date',
format: 'yyyy-MM-dd HH:mm:ss',
fielddata: true
},
created_at: {
type: 'date',
format: 'yyyy-MM-dd HH:mm:ss',
fielddata: true
},
updated_at: {
type: 'date',
format: 'yyyy-MM-dd HH:mm:ss',
fielddata: true
}
}
},
data: {
dataset: 'events',
event_category: 'test1',
event_action: 'test2',
event_count: '300,
period_from: moment().format('YYYY-MM-DD HH:MM:SS'),
period_to: moment().format('YYYY-MM-DD HH:MM:SS'),
created_at: moment().format('YYYY-MM-DD HH:MM:SS'),
updated_at: moment().format('YYYY-MM-DD HH:MM:SS')
},
period_from: moment().format('YYYY-MM-DD HH:MM:SS'),
period_to: moment(.format('YYYY-MM-DD HH:MM:SS'),
created_at: moment().format('YYYY-MM-DD HH:MM:SS'),
updated_at: moment().format('YYYY-MM-DD HH:MM:SS')
}
client.index({
index: 'my_table',
body: data
})
检索数据
client.search({
index: 'my_table',
body: {
query: {
nested: {
path: 'data',
query: {
bool: {
must: [{
match: {
'data.event_category': 'test1'
}
}, {
match: {
'data.event_action': 'test2'
}
}, {
range: {
period_from: {
gte: moment().format('YYYY-MM-DD HH:MM:SS')
}
}
}, {
range: {
period_to: {
lte: moment().format('YYYY-MM-DD HH:MM:SS')
}
}
}]
}
}
}
}
}
}, {
ignore: [404],
maxRetries: 3
})
我不知道为什么,我觉得我的映射可能设置不正确。我在 aboe 上遇到的根本原因错误是:
<块引用>未能创建查询:路径[数据]下的[嵌套]嵌套对象不是嵌套类型