【发布时间】:2020-08-06 14:11:17
【问题描述】:
如何在 Elasticsearch 7 中定义映射以使用来自另一个索引的字段值来索引文档?例如,如果我有一个users 索引,该索引具有name、email 和account_number 的映射,但account_number 值实际上在另一个名为accounts 的索引中,在字段number 中。
我尝试过这样的事情,但没有成功(我只在结果中看到“姓名”、“电子邮件”和“帐户 ID”):
PUT users/_mapping
{
"properties": {
"name": {
"type": "text"
},
"email": {
"type": "text"
},
"account_id": {
"type": "integer"
},
"accounts": {
"properties": {
"number": {
"type": "text"
}
}
}
}
}
accounts 索引具有以下映射:
{
"properties": {
"name": {
"type": "text"
},
"number": {
"type": "text"
}
}
}
【问题讨论】:
-
你说的是字段的映射还是字段的实际值?映射是每个索引的,您不能导入映射,最接近它的是使用将相同映射应用于多个索引模式的索引模板,从版本 7.8+ 开始,您还拥有组件模板。您也不能使用来自 indexB 的值来索引 indexA 中的字段,而无需使用 logstash 或一些自定义脚本查询 indexB。
-
关于你的最后一句话,我想这就是我想要完成的。用户有一个 account_id 字段,我希望用户文档包含基于 account_id 的帐户索引中的帐号。除非手动创建,否则这是不可能的,对吗?
标签: elasticsearch