我有一个假设的ElasticSearch索引,其中包含有关各种系统上的用户配置的信息。所有系统都使用相同的字段/值进行配置,用户有一组默认配置选项,如果没有为系统设置自定义选项,将使用这些选项,并减少我希望避免重复默认值的空间。 / p>
考虑这个示例ElasticSearch文档源对象:
{
userId: 12345,
default: {
columnWidth: 250,
rowHeight: 100,
pageSize: 50,
autoRefreshInterval: 60
},
systems: {
systemA: {
autoRefreshInterval: 0,
pageSize: 500
},
systemB: {
columnWidth: 400
}
}
}
通过userID获取此文档非常简单,但如果我想对用户如何使用系统进行一些查询,该怎么办?如果我想找到所有不使用systemB自动刷新的用户,我将不得不查询systems.systemB.autoRefreshInterval:0 OR (_missing_:systems.systemB.autoRefreshInterval AND default.autoRefreshInterval:0)
,这是一个冗长的,一次查询多个属性将是一场噩梦。有没有办法配置索引映射来设置默认或回退字段,这将允许我简单地查询systems.systemB.autoRefreshInterval:0
并获取此文档,因为默认值设置正确?
答案 0 :(得分:0)
经过大量的阅读文档,论坛和询问,我已经确定这不是ElasticSearch支持的用例。为了实现这一点,我要么必须处理额外的存储空间并将默认值复制到各个系统,要么写一些非常冗长和丑陋的查询。