elasticsearch Elasticsearch作用域嵌套到查询的聚合
我有一个嵌套数据类型的查询,希望返回嵌套数据类型的统计数据聚合(由查询过滤)。代码如下:elasticsearch Elasticsearch作用域嵌套到查询的聚合,elasticsearch,nest,elasticsearch,Nest,我有一个嵌套数据类型的查询,希望返回嵌套数据类型的统计数据聚合(由查询过滤)。代码如下: GET dan-created/_search { "_source" : ["m_iID", "m_iYear"], "query": { "nested": { "path": "m_PeopleList", "query": { "match": { "m_PeopleList.na
GET dan-created/_search
{
"_source" : ["m_iID", "m_iYear"],
"query": {
"nested": {
"path": "m_PeopleList",
"query": {
"match": {
"m_PeopleList.name": "Daniel"
}
},
"inner_hits" : {}
}
},
"aggregations" : {
"people" : {
"nested" : {
"path" : "m_PeopleList"
},
"aggregations" : {
"averageDist": {
"stats" : {
"field":"m_PeopleList.value"
}
}
}
}
}
}
返回的统计数据是针对整个索引的,但我希望它们只针对上面查询中的匹配项返回。我在其他地方看到过这样的例子,但在最新版本的elasticsearch中没有,我似乎无法让它们发挥作用
谢谢,
丹尼尔你可以用
你可以用一个
是的,这是我想要的。我本以为有一种方法可以做到这一点,而无需两次指定过滤器查询。但是我发现,如果您只是想要聚合,那么可以删除查询部分并添加“size”:0。谢谢如果没有嵌套的文档,则只能定义一次筛选器。但是,由于聚合和查询不共享相同的
嵌套的子句,您必须定义它两次(size!=0)。是的,这是我想要的。我本以为有一种方法可以做到这一点,而无需两次指定过滤器查询。但是我发现,如果您只是想要聚合,那么可以删除查询部分并添加“size”:0。谢谢如果没有嵌套的
文档,则只能定义一次筛选器。但是,由于聚合和查询不共享相同的嵌套的子句,您必须定义它两次(size!=0)
"aggregations" : {
"people" : {
"nested" : {
"path" : "m_PeopleList"
},
"aggregations" : {
"myFilter": {
"filter" : { "match": { "m_PeopleList.name": "Daniel" } },
"aggregations": {
"averageDist": {
"stats" : {
"field":"m_PeopleList.value"
}
}
}
}
}
}
}