如何为弹性搜索设计映射,其中一个类型包含另一个类型



我想为 Elastic Search 设计一个映射,其中包含类型 A 和类型 B。 这是官方文件中的示例

{
"mappings":
{
"A":{
"properties":
{
"A1":{"type":"keyword"},
"A2":{"type":"keyword"},
"A2":{"type":"keyword"}
}
},
"B":{
"properties":
{
"B1":{"type":"keyword"},
"B2":{"type":"keyword"},
"B2":{"type":"keyword"},
"Field_A":{               //"Field_A":{"type":"A"} not legal
"properties":
{
"A1":{"type":"keyword"},
"A2":{"type":"keyword"},
"A2":{"type":"keyword"}
}
}
}
}
}

有没有更优雅的方法可以做到这一点?与 c++ 类一样,首先声明 A 和 B,然后为 B 定义类型 A 的成员。

class A;
class B
{
private:
A m_AtypeMember;
}

执行此操作的最佳方法是定义一个动态模板,您可以在其中指定匹配项 (*.A1( 或与正则表达式更复杂的匹配,这样此映射将应用于两种类型。

{
"mappings": {
"doc": {
"dynamic_templates": [
{
"mappingName": {
"match_mapping_type": "string",
"match_pattern": "regex",
"match":"your regular expresion",
"mapping": {
"type": "keyword"
}
}
}
]
}
}
}

最新更新