在Elasticsearch中聚合不同数据类型的嵌套字段

时间:2016-05-09 16:09:11

标签: elasticsearch types aggregate

我有一个基于Products的索引,映射中声明的一个字段是Attributes。此字段是嵌套类型,因为它将包含两个值 - 键和值。我遇到的问题是,取决于属性的上下文,value的数据类型可以在整数和字符串之间变化。

例如:

{"attributes":[{"key":"StrEx","value":"Red"},{"key":"IntEx","value":2}]}

似乎是'值'的每个实例的数据类型。在所有未来的属性中的嵌套文档中,根据输入的第一个数据来决定。我需要能够将它存储为整数/长数据类型,以便我可以执行范围查询。

非常感谢任何帮助或其他想法。

1 个答案:

答案 0 :(得分:2)

对于value字段,您需要这样的映射:

    "value": {
      "type": "string",
      "fields": {
        "as_number": {
          "type": "integer",
          "ignore_malformed": true
        }
      }
    }

基本上,您的字段为string 使用fields您可以尝试将其格式化为数字字段。

如果您想使用range个查询,请使用value.as_number,其他任何内容都使用value