【问题标题】:How to find the total sum of a few search terms in elastic search?弹性搜索中如何求几个搜索词的总和?
【发布时间】:2017-01-02 12:14:03
【问题描述】:

我收集了如下文档:

`

{
  "_index": "senseihub-data",
  "_type": "historical-data",
  "_id": "AVa-BvxJ9Iu6vSdmuerK",
  "_score": 1,
  "_source": {
    "university": "JOHNS HOPKINS UNIVERSITY",
    "description": "FUNCTIONAL ANALYSIS OF CAROTID BODY RESPONSES TO HYPOXIA IN MICE\"",
    "funding": 3327323,
    "taxonomy": "Signal Processing "
  }
}

`

现在我想查找一些分类法的总资金信息。 例如如果我搜索分类法:“信号处理”、“数据挖掘”,我想得到以下输出

信号处理:所有分类为信号处理的文档的“资金”字段的总和

数据挖掘:分类为数据挖掘的所有文档的“资金”字段的总和

这是我迄今为止想出的,但不能正常工作:

`

{
   "query":{
      "bool":{
         "should":[
            {
               "term":{
                  "taxonomy":"Signal Processing"
               }
            },
            {
               "term":{
                  "taxonomy":"Data Mining"
               }
            }
         ]
      }
   },
   "sort":[
      {
         "funding":{
            "order":"desc"
         }
      }
   ],
   "aggs":{
      "funds":{
         "sum":{
            "field":"funding"
         }
      }
   }
}

`

我是弹性搜索的绝对新手。请帮忙。

【问题讨论】:

    标签: elasticsearch sum kibana aggregation elasticsearch-plugin


    【解决方案1】:

    您可以通过

    获得每个分类的资金总额
    1. 使用术语聚合而不是分类法来获取所有分类法
    2. 使用 sum 聚合作为步骤 1 中存储桶的子聚合。
    {
      "query": {
        "match_all": {}
      },"aggs": {
        "taxonomy": {
          "terms": {
            "field": "taxonomy",
            "size": 0
          },"aggs": {
              "NAME": {
                 "sum": {
                 "field": "funding"
                 }
               }
          }
        }
      },"size": 0
    }
    

    上述查询将为您提供每个分类的资金总额。


    如果您想要特定分类的资金总额

    1. 使用术语查询获取该分类的所有文档
      1. 对第 1 步的结果使用求和聚合
     {  
       "query":{  
          "term":{  
             "taxonomy":{  
                "value":"Signal Processing"
             }
          }
       },
       "aggs":{  
          "NAME":{  
             "sum":{  
                "field":"funding"
             }
          }
       }
    }
    

    确保“分类”字段未分析,否则“信号处理”等值将被标记为“信号”、“处理”。

    您的查询要达到的目的是:

    1. 获取分类为“信号处理”或“数据挖掘”的文档。
    2. 为第 1 步中的所有文件汇总资金

    Bool Query Reference

    【讨论】:

      猜你喜欢
      • 2020-09-11
      • 2014-11-18
      • 2012-07-11
      • 2019-06-04
      • 1970-01-01
      • 2021-10-24
      • 2021-06-12
      • 2018-10-26
      • 2017-08-27
      相关资源
      最近更新 更多