【问题标题】:Elastic search data aggregation弹性搜索数据聚合
【发布时间】:2016-01-28 04:03:52
【问题描述】:

在索引中输入以下示例:

{
"_index": "aggs_20141028",
"_type": "aggobj",
"_id": "4aNpd7zlR5eTdA7o2I898A",
"_version": 1,
"_score": 1,
"_source": {
    "UserId": 4,
    "Created": "2014-10-28T09:40:22.0652362+02:00",
    "Path": "Path_0",
    "IntProp1": 1,
    "IntProp2": 87,
    "IntProp3": 903,
    "BoolProp1": false,
    "BoolProp2": true,
    "BoolProp3": false,
    "StringProp1": "StringProp_6",
    "StringProp2": "StringProp_6",
    "StringProp3": "StringProp_3"
    }
}

如何为以下用例聚合其中的数据?

  1. 按用户、时间段(例如日、月)聚合 BoolProp(计数)组,按开始日期过滤
  2. 聚合 BoolProp(计数)组时间段(例如日、月),按 startdate、userId 过滤
  3. 按内容属性、时间段(例如日、月)聚合 BoolProp(计数)组,按开始日期过滤
  4. 按路径、时间段、开始日期过滤器聚合 IntProp(总和)组

原始的 ES 文档很难理解... http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-aggregations-metrics-sum-aggregation.html

【问题讨论】:

    标签: elasticsearch aggregation


    【解决方案1】:

    您的数据中没有字段 startdate - 我假设您的意思是 Created? 此外,您还有三个 BoolProp 字段,它们都是布尔值 - 不清楚您要如何计算它们,例如你在计算它们是否存在、真实等?

    大小字段取决于数据的大小,需要调整。

    这是我处理第一个要求的方式:

    curl -XGET 'http://localhost:9200/aggs_20141028/aggobj/_search?pretty' -d '{
      "aggs": {
         "date_filter_agg": {
             "filter" : {
                "term": { "Created": "2014-10-28T09:40:22.0652362+02:00" }},
          "aggs" : {
           "user_agg" : {
             "terms": {"size": 0, "field" : "UserId"},
             "aggs" : {
                 "date_agg": {  
                    "date_histogram" : { "field" : "Created", "interval" : "month" },
                    "aggs" : {
                        "BoolProp_count": {"sum" : {"script" : "(doc[\"BoolProp1\"].value == \"T\" ? 1 : 0) + (doc[\"BoolProp2\"].value == \"T\" ? 1 : 0) + (doc[\"BoolProp3\"].value == \"T\" ? 1 : 0)"} }  }}
    }}}}}}}'
    

    注意事项-

    1. 日期过滤器首先出现,并在您的所有搜索结果中运行。
    2. 结果然后按 UserId 分组,然后按 Created data in 分组
    3. monthly buckets 最后一个字段是计算你想要的值
    4. 返回值是最后一个,即真正的 BoolProp 字段的计数。

    其他要求的答案应该非常相似。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-10
      • 1970-01-01
      • 2019-11-08
      • 2021-02-19
      • 2023-03-18
      • 2021-10-11
      相关资源
      最近更新 更多