elasticsearch Elasticsearch作用域嵌套到查询的聚合,elasticsearch,nest,elasticsearch,Nest" /> elasticsearch Elasticsearch作用域嵌套到查询的聚合,elasticsearch,nest,elasticsearch,Nest" />

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"
              }
            }
          }
        }
      }
  }
}