首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在弹性搜索中找到几个搜索项的总和?

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

Stack Overflow用户
提问于 2016-08-25 22:42:33
回答 1查看 563关注 0票数 0

我收集了如下的文档:

`

代码语言:javascript
复制
{
  "_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 "
  }
}

`

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

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

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

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

`

代码语言:javascript
复制
{
   "query":{
      "bool":{
         "should":[
            {
               "term":{
                  "taxonomy":"Signal Processing"
               }
            },
            {
               "term":{
                  "taxonomy":"Data Mining"
               }
            }
         ]
      }
   },
   "sort":[
      {
         "funding":{
            "order":"desc"
         }
      }
   ],
   "aggs":{
      "funds":{
         "sum":{
            "field":"funding"
         }
      }
   }
}

`

对于弹性搜索,我是个十足的新手。请帮帮忙。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-25 23:31:57

您可以通过以下方式获得每个分类法的资金总和

  1. 使用术语聚合而不是分类法来获得所有的分类。
  2. 从步骤1开始,将和聚合用作桶上的子聚合。

{“查询”:{ "match_all":{ },"aggs":{“分类法”:{“术语”:{“字段”:“分类法”,“大小”:0 },"aggs":{ "NAME":{ "sum":{ "field":"funding“},"size":0}

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

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

  1. 使用术语查询获取该分类法的所有文档
    1. 对步骤1的结果使用和聚合

{“查询”:{“术语”:{“分类法”:{“值”:“信号处理”},"aggs":{ "NAME":{ "sum":{ "field":"funding“}

确保字段“分类法”是,而不是分析其他值,如“信号处理”将被标记为“信号”、“处理”。

您的查询试图实现的目标是:

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

Bool查询参考

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39155850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档