gpt4 book ai didi

elasticsearch - 如何在Elasticsearch中按基数计算元素?

转载 作者:行者123 更新时间:2023-12-03 01:57:47 25 4
gpt4 key购买 nike

假设我有一个存储人的物理属性的映射,并且该映射中的一个字段是用户ID。例如:

    "attributes": {
"hair_color": {
"type": "string"
},
"eyes_color": {
"type": "string"
},
"height": {
"type": "float"
},
"user_id": {
"type": "integer"
}
}

我正在尝试进行查询,以返回多少人拥有给定的眼睛颜色。例如,它将返回类似“绿色”的值:962。

我认为我需要做的是为eye_color字段创建术语存储桶,然后再考虑到user_id的基数子聚合,但是到目前为止我还没有成功。这就是我所拥有的:
{
"aggs" : {
"eyes_color_bucket" : {
"terms" : {
"field" : "eyes_color"
}
},
"aggs":{
"count":{
"cardinality":{
"field": "eyes_color_bucket"
}
}
}
}

当然哪个失败了。任何帮助表示赞赏。

最佳答案

您快要准备好了,可以这样尝试:

{
"size": 0,
"aggs": {
"eyes_color_bucket": {
"terms": {
"field": "eyes_color"
},
"aggs": {
"count": {
"cardinality": {
"field": "user_id"
}
}
}
}
}
}

更新

遵循下面的Richa的评论,如果您假设一个用户只有一只眼睛的颜色(即没有镜片或其他任何颜色),则可以像这样简化聚合查询:
{
"size": 0,
"aggs": {
"eyes_color_bucket": {
"terms": {
"field": "eyes_color"
}
}
}
}

您在每个存储桶中获得的 doc_count应该是具有该眼睛颜色的用户数量。感谢@Richa提出这个建议。

关于elasticsearch - 如何在Elasticsearch中按基数计算元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35358680/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com