有没有办法给ElasticSearch“默认/覆盖”值?

时间:2017-07-31 22:45:27

标签: elasticsearch

我有一个假设的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并获取此文档,因为默认值设置正确?

1 个答案:

答案 0 :(得分:0)

经过大量的阅读文档,论坛和询问,我已经确定这不是ElasticSearch支持的用例。为了实现这一点,我要么必须处理额外的存储空间并将默认值复制到各个系统,要么写一些非常冗长和丑陋的查询。