如何在弹性搜索中找到几个搜索词的总和?
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 的桶的子聚合。
{
"query": {
"match_all": {}
},"aggs": {
"taxonomy": {
"terms": {
"field": "taxonomy",
"size": 0
},"aggs": {
"NAME": {
"sum": {
"field": "funding"
}
}
}
}
},"size": 0
}
以上查询将为您提供每个分类的资金总额。
如果您想要特定分类的资金总额
- 使用术语查询获取该分类法的所有文档
- 对第 1 步的结果使用求和聚合
{
"query":{
"term":{
"taxonomy":{
"value":"Signal Processing"
}
}
},
"aggs":{
"NAME":{
"sum":{
"field":"funding"
}
}
}
}
确保字段 "taxonomy" 未分析 否则像 "Signal Processing" 这样的值将被标记为 "Signal"、"Processing".
您的查询要达到的目的是:
- 获取分类为 "Signal Processing" 或 "Data Mining" 的文档。
- 步骤 1 中所有文件的资金总和
我有如下文档集:
`
{
"_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 的桶的子聚合。
{ "query": { "match_all": {} },"aggs": { "taxonomy": { "terms": { "field": "taxonomy", "size": 0 },"aggs": { "NAME": { "sum": { "field": "funding" } } } } },"size": 0 }
以上查询将为您提供每个分类的资金总额。
如果您想要特定分类的资金总额
- 使用术语查询获取该分类法的所有文档
- 对第 1 步的结果使用求和聚合
{ "query":{ "term":{ "taxonomy":{ "value":"Signal Processing" } } }, "aggs":{ "NAME":{ "sum":{ "field":"funding" } } } }
确保字段 "taxonomy" 未分析 否则像 "Signal Processing" 这样的值将被标记为 "Signal"、"Processing".
您的查询要达到的目的是:
- 获取分类为 "Signal Processing" 或 "Data Mining" 的文档。
- 步骤 1 中所有文件的资金总和