2

Elasticsearch (バージョン 2.3) を使用して、複数のドキュメント タイプを含むインデックスを検索しています。結果の数を、各ドキュメント タイプの上位 X 件の検索ヒットに制限したいと考えています。それはどのように達成できますか?

クエリは非常に単純明快です。

{
  "sort": [
    {
      "_type": {
        "order": "asc"
      }
    }
  ],
  "query": {
    "query_string": {
      "query": "[some search query here]"
    }
  }
}

https://stackoverflow.com/a/27720049/467650で答えを見つけましたが、次のエラー メッセージしか表示されないため、バージョン 1.4.0 から構文が変更された可能性があります。

"reason": {
    "type": "search_parse_exception",
    "reason": "Found two aggregation type definitions in [types]: [terms] and [hits]",
    "line": 1,
    "col": 44
}
4

1 に答える 1

2

メタ フィールドのterms集計でそれを行い、次のようにサブ集計を使用します。typetop_hits

{
  "size": 0,
  "aggs": {
    "types": {
      "terms": {
        "field": "_type"
      },
      "aggs": {
        "topten": {
          "top_hits": {
            "size": 10
          }
        }
      }
    }
  }
}
于 2016-10-14T10:15:37.003 に答える