elasticsearch分類聚合
先模糊檢索過濾后,再對結果聚合
1. 對普通字段或數組類型聚合(默認按聚合數量排序)
例子:對Keyword類型字段sponsor聚合,先進行模糊檢索,再對檢索的結果聚合
{
"size": 0,
"query": {
"bool": {
"must": {
"wildcard": {
"sponsor": "*University*"
}
}
}
},
"aggs": {
"sponsor": {
"terms": {
"field": "sponsor",
"size":100
}
}
}
}
2. 對nested類型字段聚合(默認按聚合數量排序)
例子:對nested類型字段researchAreas對象的subjectName聚合,先進行模糊檢索,再對檢索的結果聚合
{
"size": 0,
"query": {
"bool": {
"must": [
{
"nested": {
"path": "researchAreas",
"query": {
"bool": {
"must": {
"wildcard": {
"researchAreas.subjectName": "*and*"
}
}
}
}
}
}
]
}
},
"aggs": {
"researchAreas_aggs": {
"nested": {
"path": "researchAreas"
},
"aggs": {
"filter_term": {
"filter": {
"wildcard": {
"researchAreas.subjectName": "*and*"
}
},
"aggs": {
"subjectName": {
"terms": {
"field": "researchAreas.subjectName",
"size": 100
}
}
}
}
}
}
}
}
3. 引入order對象,在例子1的基礎上,添加自主排序
例子:按聚合詞項字符串的字母順序排序
{
"size": 0,
"query": {
"bool": {
"must": {
"wildcard": {
"sponsor": "*University*"
}
}
}
},
"aggs": {
"sponsor": {
"terms": {
"field": "sponsor",
"size": 100,
"order":{
"_term":"asc"
}
}
}
}
}