使用关键字为整数的脚本的ElasticSearch项聚合

brjng4g3  于 2022-12-22  发布在  ElasticSearch
关注(0)|答案(1)|浏览(121)

是否可以使结果聚合的key成为脚本返回的int值,而不是string
请看这个例子,但是使用dayOfMonthhourOfDay而不是dayOfWeek,所以有超过10个值,所以结果最终被排序为"1", "10", "11", ..." instead of 1,2,3,...'。
以下是完整呼叫的示例:

POST /sales/_search?size=0
{
    "aggs": {
        "dayOfMonth": {
            "terms": {
                "script": {
                    "lang": "painless",
                    "source": "doc['date'].value.dayOfMonth"
                }
            }
        }
    }
}

下面是一个示例响应:

{
  ...
  "aggregations": {
    "dayOfWeek": {
      "doc_count_error_upper_bound": 0,
      "sum_other_doc_count": 0,
      "buckets": [
        {
          "key": "1",
          "doc_count": 4
        },
        {
          "key": "10",
          "doc_count": 3
        },
        {
          "key": "2",
          "doc_count": 2
        }
      ]
    }
  }
}
5ssjco0h

5ssjco0h1#

设置value_type参数可以通过将未Map的字段强制转换为正确的类型来解决此问题。

{
  "aggs": {
    "ip_addresses": {
      "terms": {
        "script": "doc['date'].value.dayOfMonth",
        "value_type": "long"
      }
    }
  }
}

尝试格式化字节编辑失败

相关问题