代码之家  ›  专栏  ›  技术社区  ›  mike

如何在ElasticSearch 6.x中获取动态/未知字段的聚合?

  •  1
  • mike  · 技术社区  · 8 年前

    [
      {
        "name": "Test product 1",
        "features": [
          {
            "name": "color",
            "value": "Blue"
          },
          {
            "name": "size",
            "value": "M"
          },
          {
            "name": "height",
            "value": 124,
          }
        ]
      },
      {
        "name": "Test product 1",
        "features": [
          {
            "name": "color",
            "value": "Red"
          },
          {
            "name": "wifi",
            "value": "ac/g/n"
          }
        ]
      }
    ]  
    

    我在找下面的东西。请注意 "features.name => value" 在ES中不是真实/有效的符号。

    GET /_search
    {
        "aggs" : {
            "features" : {
                "terms" : { "field" : "features.name => value" }
            }
        }
    }
    

    像这样的回应

    {
        ...
        "aggregations" : {
            "genres" : {
                "doc_count_error_upper_bound": 0, 
                "sum_other_doc_count": 0, 
                "buckets" : {"color": [ 
                          {
                            "key" : "red",
                            "doc_count" : 6
                           },
                           {
                           "key" : "blue",
                           "doc_count" : 3
                           },
                         ],
                    {"size": [ 
                          {
                            "key" : "M",
                            "doc_count" : 6
                           },
                    ],
                    {"wifi": [ 
                          {
                            "key" : "ac/g/n",
                            "doc_count" : 1
                           },
                    ]
            }
        }
    }
    
    0 回复  |  直到 8 年前
    推荐文章