私はこの構造を持つドキュメントを持っています:
{
FIELD1:string,
FIELD2:
[ {SUBFIELD:number}, {SUBFIELD:number}...]
}
FIELD2.SUBFIELDの数値の合計の結果で並べ替えたい:
GET myindex/_search
{
"size":0,
"aggs": {
"a1": {
"terms": {
"field": "FIELD1",
"size":0
},
"aggs":{
"a2":{
"sum":{
"field":"FIELD2.SUBFIELD"
}
}
}
}
}
}
これを行うと、ソートされていないバケットが取得されますが、「a2」値でソートされたバケットが必要です。どうすればできますか?ありがとうございました!
あなたはそれをほとんど持っていました。次のように、 order
property をa1
用語の集計に追加するだけです。
GET myindex/_search
{
"size":0,
"aggs": {
"a1": {
"terms": {
"field": "FIELD1",
"size":0,
"order": {"a2": "desc"} <--- add this
},
"aggs":{
"a2":{
"sum":{
"field":"FIELD2.SUBFIELD"
}
}
}
}
}
}
Valから素晴らしい https://stackoverflow.com/users/4604579/val
基本的に同じことですが、ここでは、各「名前」の最大の「サイズ」を見つけ、上位25か所を表示するために機能したものを示します。
{
"size": 0,
"aggs": {
"agg1": {
"terms": {
"field": "name.keyword",
"order": {
"agg2": "desc"
},
"size": 25
},
"aggs": {
"agg2": {
"max": {
"field": "size"
}
}
}
}
}
}