我想设计一个弹性搜索的映射,它包含一个类型A和一个类型B.而类型B有一个类型为A的字段。 这是官方文件中的一个例子
{
"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;
}
答案 0 :(得分:0)
执行此操作的最佳方法是定义DynamicTemplate,您可以在其中指定匹配(* .A1)或与正则表达式更复杂的匹配,这样这种映射将应用于这两种类型。
{
"mappings": {
"doc": {
"dynamic_templates": [
{
"mappingName": {
"match_mapping_type": "string",
"match_pattern": "regex",
"match":"your regular expresion",
"mapping": {
"type": "keyword"
}
}
}
]
}
}
}