从脚本中的聚合中获取结果 ElasticSearch/Painless
Get result from aggs in script ElasticSearch/Painless
我是 ElasticSearch 世界的新手。我一直在尝试编写简单的请求,我需要在我的脚本中获取聚合结果以创建简单的条件。有可能这样做吗?
以下条件仅供参考。
GET _search
{
"aggs" : {
"sum_field" : { "sum" : { "field" : "someField" } }
},
"script_fields": {
"script_name": {
"script": {
"lang": "painless",
"source": """
// get there aggs result (sum_field)
if(sum_field > 5){
return sum_field
}
"""
}
}
}
}
要求是在具有相同字段名称
的多个索引上执行sum aggregation
现在有了多个索引,您必须检查该特定字段 是否存在于该索引中 以及该字段是否属于 相同的数据类型.
索引
我创建了三个索引,有一个名为 num
的字段。
index_1
- num: long
index_2
- num: long
index_3
- num: text
: fielddata: true
另请注意,如果该字段的类型为 text
,那么我将其设置为 属性 fielddata:true
。但是如果你不设置它,那么下面的查询会给你聚合结果以及一个错误,说你不能检索类型 text
的值作为它的分析字符串,你只能使用 doc
对于 non_analyzed
的字段。
示例查询:
POST /_search
{
"size":0,
"query":{
"bool":{
"filter":[
{
"exists":{
"field":"num"
}
}
]
}
},
"aggs":{
"myaggs":{
"sum":{
"script":{
"source":"if(doc['num'].value instanceof long) return doc['num'].value;"
}
}
}
}
}
无法设置时查询fielddata:true
在这种情况下,您需要明确提及要聚合的索引。
POST /_search
{
"size":0,
"query":{
"bool":{
"filter":[
{
"exists":{
"field":"num"
}
},
{
"terms":{
"_index":[
"index_1",
"index_2"
]
}
}
]
}
},
"aggs":{
"myaggs":{
"sum":{
"script":{
"source":"if(doc['num'].value instanceof long) return doc['num'].value;"
}
}
}
}
}
希望对您有所帮助!
我是 ElasticSearch 世界的新手。我一直在尝试编写简单的请求,我需要在我的脚本中获取聚合结果以创建简单的条件。有可能这样做吗? 以下条件仅供参考。
GET _search
{
"aggs" : {
"sum_field" : { "sum" : { "field" : "someField" } }
},
"script_fields": {
"script_name": {
"script": {
"lang": "painless",
"source": """
// get there aggs result (sum_field)
if(sum_field > 5){
return sum_field
}
"""
}
}
}
}
要求是在具有相同字段名称
的多个索引上执行sum aggregation现在有了多个索引,您必须检查该特定字段 是否存在于该索引中 以及该字段是否属于 相同的数据类型.
索引
我创建了三个索引,有一个名为 num
的字段。
index_1
- num: long
index_2
- num: long
index_3
- num: text
: fielddata: true
另请注意,如果该字段的类型为 text
,那么我将其设置为 属性 fielddata:true
。但是如果你不设置它,那么下面的查询会给你聚合结果以及一个错误,说你不能检索类型 text
的值作为它的分析字符串,你只能使用 doc
对于 non_analyzed
的字段。
示例查询:
POST /_search
{
"size":0,
"query":{
"bool":{
"filter":[
{
"exists":{
"field":"num"
}
}
]
}
},
"aggs":{
"myaggs":{
"sum":{
"script":{
"source":"if(doc['num'].value instanceof long) return doc['num'].value;"
}
}
}
}
}
无法设置时查询fielddata:true
在这种情况下,您需要明确提及要聚合的索引。
POST /_search
{
"size":0,
"query":{
"bool":{
"filter":[
{
"exists":{
"field":"num"
}
},
{
"terms":{
"_index":[
"index_1",
"index_2"
]
}
}
]
}
},
"aggs":{
"myaggs":{
"sum":{
"script":{
"source":"if(doc['num'].value instanceof long) return doc['num'].value;"
}
}
}
}
}
希望对您有所帮助!