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 /无痛脚本创建自定义排序,但是我会创建两个独立的聚合并将它们合并到您的应用程序中。 –