elasticsearch - 将值作为键 VS 将它们作为 ElasticSearch 中的嵌套对象数组
问题描述
目前,我有一个弹性搜索索引,该索引的字段具有如下所示的 A、B、C 子字段:
"myfield":{
"A":{
"name":"A",
"prop1":{
"sub-prop1":1,
"sub-prop2":2
},
"prop2":{}
},
"B":{
"name":"B",
"prop1":{
"sub-prop1":3,
"sub-prop2":8,
"sub-prop3":4,
"sub-prop4":7,
},
"prop2":{}
},
"C":{}
}
可以看出,A 和 B 字段的结构相同,但是 prop1 下的子道具可以是动态的,这意味着根据添加的文档,映射可能会改变,但不是问题,因为 A 和 B 是分开存在的键。但是,正因为如此,我面临另一个问题,即不断添加新文档,由于动态映射,可能存在诸如 A、B、C、D 之类的子道具或子字段……等等继续添加到映射中,这反过来可能导致映射超出index.mapping.total_fields.limit,所以为了避免我打算将“myfield”和“prop1”字段作为对象数组而不是在映射,以便字段 A、B、C... 存储为数组元素,而不是作为新字段不断添加到映射中。
问题是 - 这是一个可行的解决方案以及如何搜索“myfield.A.prop1.sub-prop1”> = 3
新的映射看起来像:
"myfield":[
{
"name":"A",
"prop1":{
"sub-prop1":1,
"sub-prop2":2
},
"prop2":{}
},
{
"name":"B",
"prop1":{
"sub-prop1":3,
"sub-prop2":8,
"sub-prop3":4,
"sub-prop4":7,
},
"prop2":{}
},
{}
]
解决方案
推荐阅读
- javascript - 如何更改谷歌扩展中颜色输入的默认值
- vba - 在 VBA PowerPoint 中显示颜色选择器供用户选择
- python-3.x - 日期之间的 Python 和 pandas 数据透视表总和
- html - 仅在使用 Angular 7 关注输入字段时元素的外观
- java - 如何在 http 响应标头中使用特殊字符
- android - 房间 allowMainThreadQueries 与 Kotlin 协程
- spring-boot - Spring DevTools 持久会话空会话映射
- html - Bootstrap 4 Navbar:右对齐下拉菜单在右侧打开:溢出
- javascript - 如何附加多个背景图像
- ios - “输入不是 PCH 文件” - Xcode