我对Elasticsearch中的QueryDSL有疑问。 这是一个测试查询。
GET index/_search {
"size": 0,
"aggs": {
"groupByClass": {
"terms": {
"field": "group"
},
"aggs": {
"avgGroup": {
"avg": {
"field": "score"
}
}
}
}
}
}
我想获得比avgGroup更大的值,例如
SELECT *
FROM index
WHERE score > (SELECT AVG(score) FROM index)
答案 0 :(得分:0)
Elasticsearch不会为您做到这一点。你需要从外部处理这个问题。使用脚本或在应用程序中。
文件样本:
{
"id": 1,
"name":"chemistry",
"score": 15
}
平均查询:
{
"aggs" : {
"avg_score" : { "avg" : { "field" : "score" } }
}
}
然后将avg_score值传递给第二个查询:
{
"query": {
"range": {
"score": {
"gte": //avg_score //avg_score value set here in your application side
}
}
}
}