0
我使用的術語彙總得到所有沒有用戶從各個城市Elasticsearch - 獲取方面聚集了指定的字段
{
"aggs" : {
"cities" : {
"terms" : { "field" : "city.name" }
}
}
}
這是給結果。但我總是希望得到一些具體城市的聚合結果,而不管它們是否在前十名。我是否需要分別爲每個城市使用過濾器聚合來獲得其結果?
我使用的術語彙總得到所有沒有用戶從各個城市Elasticsearch - 獲取方面聚集了指定的字段
{
"aggs" : {
"cities" : {
"terms" : { "field" : "city.name" }
}
}
}
這是給結果。但我總是希望得到一些具體城市的聚合結果,而不管它們是否在前十名。我是否需要分別爲每個城市使用過濾器聚合來獲得其結果?
你有三種解決方法:
答:您可以在查詢中指定一個過濾器:
{
"query": {
"terms": {
"city.name": [ "city1", "city2", "city3" ]
}
},
"aggs": {
"cities": {
"terms": {
"field": "city.name"
}
}
}
}
B.你可以在聚合指定過濾器:
{
"aggs": {
"city_filter": {
"filter": {
"terms": {
"city.name": [
"city1",
"city2",
"city3"
]
}
},
"aggs": {
"cities": {
"terms": {
"field": "city.name"
}
}
}
}
}
}
Ç你可以用filter values這個術語聚合:
{
"aggs": {
"cities": {
"terms": {
"field": "city.name",
"include": "city1*",
"exclude": "city2*"
}
}
}
}
您可以使用groovy /無痛腳本創建自定義排序,但是我會創建兩個獨立的聚合並將它們合併到您的應用程序中。 –