如何在弹性搜索中找到几个搜索词的总和?

How to find the total sum of a few search terms in elastic search?

我有如下文档集:

`

{
  "_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 "
  }
}

`

现在我想找到几个分类的总资助信息。 例如如果我搜索分类法:'Signal Processing','Data Mining',我想得到以下输出

信号处理:'funding' 分类法为信号处理的所有文档字段的总和

数据挖掘:'funding' 分类法为数据挖掘的所有文档字段的总和

这是我到目前为止的想法,但不能正常工作:

`

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

`

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

您可以通过

获得每个分类的资金总额
  1. 在分类法上使用术语聚合来获取所有分类法
  2. 使用总和聚合作为来自步骤 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"
         }
      }
   }
}

确保字段 "taxonomy" 未分析 否则像 "Signal Processing" 这样的值将被标记为 "Signal"、"Processing".

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

  1. 获取分类为 "Signal Processing" 或 "Data Mining" 的文档。
  2. 步骤 1 中所有文件的资金总和

Bool Query Reference