elasticsearch - 通过多个字段聚合并在ElasticSearch中计数

标签 elasticsearch group-by count aggregate

我有一个包含以下数据的索引:

{
        "_index": "recommender",
        "_type": "doc",
        "_id": "AWZl8H042YsxaK6w02jY",
        "_score": 1,
        "_source": {
          "user": "102",
          "song": "1",
          "created": "12-28-2018 19:12:12"
        }
      },
      {
        "_index": "recommender",
        "_type": "doc",
        "_id": "AWZl8PM5zqmU2ne0dY9W",
        "_score": 1,
        "_source": {
          "user": "102",
          "song": "5",
          "created": "01-1-2018 23:12:12"
        }
      },
      {
        "_index": "recommender",
        "_type": "doc",
        "_id": "AWZl8PPx2YsxaK6w02jc",
        "_score": 1,
        "_source": {
          "user": "102",
          "song": "5",
          "created": "01-1-2018 23:12:12"
        }
      },
      {
        "_index": "recommender",
        "_type": "doc",
        "_id": "AWZl8Xdm2YsxaK6w02jf",
        "_score": 1,
        "_source": {
          "user": "102",
          "song": "5",
          "created": "06-10-2018 15:16:12"
        }
      },
      {
        "_index": "recommender",
        "_type": "doc",
        "_id": "AWZl8XgvzqmU2ne0dY9a",
        "_score": 1,
        "_source": {
          "user": "102",
          "song": "5",
          "created": "06-10-2018 15:16:12"
        }
      },
      {
        "_index": "recommender",
        "_type": "doc",
        "_id": "AWZl8ZLwzqmU2ne0dY9d",
        "_score": 1,
        "_source": {
          "user": "103",
          "song": "5",
          "created": "06-10-2018 15:16:12"
        }
      },
      {
        "_index": "recommender",
        "_type": "doc",
        "_id": "AWZl8aF1zqmU2ne0dY9e",
        "_score": 1,
        "_source": {
          "user": "103",
          "song": "6",
          "created": "06-10-2018 15:16:12"
        }
      },
      {
        "_index": "recommender",
        "_type": "doc",
        "_id": "AWZl79hm2YsxaK6w02jW",
        "_score": 1,
        "_source": {
          "user": "102",
          "song": "1",
          "created": "1-02-2018 13:12:12"
        }
      },
      {
        "_index": "recommender",
        "_type": "doc",
        "_id": "AWZl8O1nzqmU2ne0dY9U",
        "_score": 1,
        "_source": {
          "user": "102",
          "song": "5",
          "created": "01-1-2018 23:12:12"
        }
      },
      {
        "_index": "recommender",
        "_type": "doc",
        "_id": "AWZl8O9F2YsxaK6w02ja",
        "_score": 1,
        "_source": {
          "user": "102",
          "song": "5",
          "created": "01-1-2018 23:12:12"
        }
      }

我想统计每个用户的歌曲数。这样我就可以获得数据,用户102播放了歌曲5,总共4次。

我是苹果,不算数。用户数或否。的歌曲分开。但是,无法将歌曲和用户聚集在一起。
POST /eventindex/_search?size=0
{
    "aggs" : {
        "doc" : {
            "terms" : { "field" : "user" }
        }
    }
}

我读到可以使用子聚合并尝试了以下操作:
POST /recommender/_search?size=0

{
      "aggs": {
        "doc": {
          "nested": {
            "path": "docs"
          },
          "aggs": {
            "name": {
              "terms": {
                "field": "user"
              },
              "aggs": {
                "name": {
                  "terms": {
                    "field": "song"
                  }
                }
              }
            }
          }
        }
      }
    }
}

但是,这没有用。解决这个问题的正确方法是什么?

最佳答案

希望这可以解决您的问题

POST /recommender/_search?size=0
{ 
  "aggs": {     
    "song": {       
      "terms": {         
        "field": "song"       
      },
      "aggs": {
        "user": {         
          "terms": {            
            "field": "user"          
          }
        }
      }
    }
  }
}


该查询将为每首歌曲输出单独的用户计数。

关于elasticsearch - 通过多个字段聚合并在ElasticSearch中计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52771240/

相关文章:

docker - Syslog 驱动程序不适用于 docker compose 和 elk stack

php - 弹性JSON查询到PHP关联数组和空对象

sql - 即使它是聚合的,列在选择列表中无效

elasticsearch - 在elastalert kibana插件中为kibana仪表板创建规则

elasticsearch - 弹性搜寻效能

python - pandas 使用记录的权重和列名称的值进行分组加权平均值

mysql - Join 和 Group by Clause 给出了错误的输出

SQL 计算连接表上的唯一真值

mysql - 每个聊天室的加入计数

python - 细数汉诺塔的 Action