ElasticSearch 聚合 function_score

ElasticSearch aggs with function_score

我试图排除具有相同 slug 参数的重复文档 我在 ElasticSearch(版本 2.4)中使用 aggs。我使用 - 这个查询:

 {
  "fields":[
    "id",
    "score"],
  "size":0,
  "query":{
    "function_score":{
      "query":{
        "bool":{
          "should":[
            {
              "match":{
                "main_headline.en":{
                  "query":"headline_for_search"
                }
              }
            },
            {
              "match":{
                "body.en":"body for search"
              }
            }],
          "must_not":{
            "term":{
              "id":75333
            }
          },
          "filter":[
            {
              "term":{
                "status":3
              }
            },
            [
              {
                "term":{
                  "sites":6
                }
              }]]
        }
      },
      "functions":[
        {
          "gauss":{
            "published_at":{
              "scale":"140w",
              "decay":0.3
            }
          }
        }
      ]
    },
    "aggs":{
      "postslug":{
        "terms":{
          "field":"slug",
          "order":{
            "top_score":"desc"
          }
        },
        "aggs":{
          "grouppost":{
            "top_hits": {
              "_source": {
                "include": [
                  "id",
                  "slug",
                ]
              },
              "size" : 10
            }
          }
        }
      }
    }
  }
}

当我 运行 它时我得到错误

failed to parse search source. expected field name but got [START_OBJECT] I can`t figure out where is a mistake.

没有 aggs 部分一切正常(当前重复除外)

我看到一个问题与源过滤部分 include 应该读作 includes 这一事实有关。另外,aggs 部分不在正确的位置,你在查询部分有它,它应该在顶层:

{
  "fields": [
    "id",
    "score"
  ],
  "size": 0,
  "query": {
    "function_score": {
      "query": {
        "bool": {
          "should": [
            {
              "match": {
                "main_headline.en": {
                  "query": "headline_for_search"
                }
              }
            },
            {
              "match": {
                "body.en": "body for search"
              }
            }
          ],
          "must_not": {
            "term": {
              "id": 75333
            }
          },
          "filter": [
            {
              "term": {
                "status": 3
              }
            },
            [
              {
                "term": {
                  "sites": 6
                }
              }
            ]
          ]
        }
      },
      "functions": [
        {
          "gauss": {
            "published_at": {
              "scale": "140w",
              "decay": 0.3
            }
          }
        }
      ]
    }
  },
  "aggs": {
    "postslug": {
      "terms": {
        "field": "slug",
        "order": {
          "top_score": "desc"
        }
      },
      "aggs": {
        "grouppost": {
          "top_hits": {
            "_source": {
              "includes": [
                "id",
                "slug"
              ]
            },
            "size": 10
          }
        }
      }
    }
  }
}