如何使用ElasticSearch从AGGS、多区域查询返回10个以上的存储桶?

9q78igpj  于 2022-09-20  发布在  ElasticSearch
关注(0)|答案(1)|浏览(238)

我使用的是Elasticearch 8.4.1,并且我尝试从该工作查询中返回10个以上的存储桶:

GET vaersdata_2/_search
{
  "aggs": {
    "age_died after_shot": {
        "multi_terms": {
        "terms": [{ 
          "field": "AGE_YRS"
        }, {
          "field": "DIED"
        }]
      }
    }
  }
}

所以我在混合中增加了大小,但在多次尝试失败后,它抛出了一个错误。直到我运行该查询,它才在控制台中显示错误:

GET vaersdata_2/_search
{
  "aggs": {
      "size": 0,
    "age_died after_shot": {
        "multi_terms": {
        "terms": [{ 
          "field": "AGE_YRS",
          "size" : 100
        }, {
          "field": "DIED"
        }]
      }
    }
  }
}

然后我得到了这个错误:

“type”:“PARSING_EXCEPTION”,“REASON”:“聚合定义[SIZE以[VALUE_NUMBER]开头,应为[START_OBJECT]。”,“line”:3,“ol”:15},“Status”:400

我见过使用嵌套术语查询将SIZE用作解决方案,但是对于AGGS、多Terrms查询如何做到这一点呢?

a9wyjsp7

a9wyjsp71#

TLDR;

非常接近,但size参数没有放在正确的位置。

解决方案

GET vaersdata_2/_search
{
  "aggs": {
    "age_died after_shot": {
        "multi_terms": {
        "terms": [{ 
          "field": "AGE_YRS"
        }, {
          "field": "DIED"
        }],
        "size" : 100
      }
    }
  }
}

以下查询已使用kibana 8.4.1进行了测试

GET kibana_sample_data_ecommerce/_search
{
  "aggs": {
    "multi_bucket": {
      "multi_terms": {
        "size": 12,
        "terms": [{
          "field": "customer_first_name.keyword" 
        }, {
          "field": "customer_last_name.keyword"
        }]
      }
    }
  }
}

相关问题