gpt4 book ai didi

elasticsearch如何查找出现次数

转载 作者:行者123 更新时间:2023-11-29 02:55:09 26 4
gpt4 key购买 nike

请问是否可以将此sql查询转换为ES查询?按应用、猫从错误组中选择前 10 个应用、猫、计数(*)

或者在英语中它会回答:“显示热门应用、猫及其数量”,因此这将按多个字段分组并返回名称和数量。

最佳答案

要聚合多个字段的组合,您必须在 Terms Aggregation 中使用脚本,如下所示:

POST <index name>/<type name>/_search?search_type=count
{
"aggs": {
"app_cat": {
"terms": {
"script" : "doc['app'].value + '#' + doc['cat'].value",
"size": 10
}
}
}
}

我使用 # 作为分隔符,假设它不存在于 app 和/或 cat 字段的任何值中。您可以使用您选择的任何其他分隔符。您会收到如下回复:

{
"took": 3,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 10,
"max_score": 0,
"hits": []
},
"aggregations": {
"app_cat": {
"buckets": [
{
"key": "app2#cat2",
"doc_count": 4
},
{
"key": "app1#cat1",
"doc_count": 3
},
{
"key": "app2#cat1",
"doc_count": 2
},
{
"key": "app1#cat2",
"doc_count": 1
}
]
}
}
}

在客户端,您可以通过字符串操作从聚合响应中获取 appcat 字段的各个值。

在较新版本的 Elasticsearch 中,出于安全原因,脚本在默认情况下处于禁用状态。如果要启用脚本,请阅读 this .

关于elasticsearch如何查找出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30173277/

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