elasticsearch elasticsearch如何查找出现次数,elasticsearch,elasticsearch" /> elasticsearch elasticsearch如何查找出现次数,elasticsearch,elasticsearch" />

elasticsearch elasticsearch如何查找出现次数

elasticsearch elasticsearch如何查找出现次数,elasticsearch,elasticsearch,我想知道是否可以将此sql查询转换为ES查询? 按应用程序类别从错误组中选择前10个应用程序,类别,计数(*) 或者在英语中,它会回答:“显示顶级应用程序、cat及其计数”,因此这将按多个字段分组,并返回名称和计数 就是您要寻找的。要在多个字段的组合上进行聚合,您必须使用术语聚合中的脚本,如下所示: POST <index name>/<type name>/_search?search_type=count { "aggs": { "app_cat": {

我想知道是否可以将此sql查询转换为ES查询? 按应用程序类别从错误组中选择前10个应用程序,类别,计数(*)


或者在英语中,它会回答:“显示顶级应用程序、cat及其计数”,因此这将按多个字段分组,并返回名称和计数

就是您要寻找的。

要在多个字段的组合上进行聚合,您必须使用
术语聚合中的脚本,如下所示:

POST <index name>/<type name>/_search?search_type=count
{
  "aggs": {
    "app_cat": {
      "terms": {
        "script" : "doc['app'].value + '#' + doc['cat'].value",
        "size": 10
      }
    }
  }
}
{
   "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
            }
         ]
      }
   }
}
在客户端,您可以通过字符串操作从聚合响应中获取
app
cat
字段的单个值


在较新版本的Elasticsearch中,由于安全原因,默认情况下禁用脚本。如果您想启用脚本,请阅读。

我已经尝试过:{“聚合”:{“应用程序聚合”:{“术语”:{“字段”:“应用程序”},“聚合”:{“猫聚合”:{“术语”:{“字段”:“猫”}}}},但它不起作用。另外,是否必须是_search或_countquery?对于聚合,它们中的任何一个都可以。谢谢,您的解决方案很有效。还有一个问题。有没有一种方法可以抑制内部的“点击”以仅返回您的输出显示的内容?{“take”:3,“timed_out”:false,{“shards”:{“total”:5,“successful”:5,“failed”:0},“hits”:{“total”:10,“max_score”:0,“hits”:[]<==就像这里},“聚合”:{“app_cat”:{“bucket”:……….我认为您无法摆脱响应中的
点击数
部分。