4

私は次のクエリを持っています

$queryDefinition = [
        'query' => [
            'bool' => [
                'must' => [
                    [
                        'query_string' => [
                            'default_field' => '_all',
                            'query' => $term
                        ]
                    ]
                ],
                'must_not' => [],
                'should' => []
            ],
        ],
        //'filter' => [
        //    'limit' => ['value' => 3],
        //],
        'from' => 0,
        'size' => 50,
        'sort' => [],
        'facets' => [
            'types' => [
                    'terms' => ['field' => '_type']
                ]
            ]
    ];

インデックスには 5 つのタイプがあり、オートコンプリートのために各タイプから 3 つの結果のみを表示したいと考えています。フィルター制限を設定すると、最初のタイプの結果のみがフィルター処理され、他のタイプの結果はすべて取得されます。

これどうやってするの?

ありがとう

4

1 に答える 1

0
{
  "aggregations": {
    "types": {
      "terms": {
        "field": "_type"
      },
      "hits": {
        "top_hits": {
          "size": 3
        }
      }
    }
  }
}

ElasticSearch 1.4.0 を使用している場合は、「_type」フィールドで用語集約を使用し、トップ ヒット集約をサブ集約として使用し、そのサイズを 3 に設定できます (この場合)。

それが役立つことを願っています。

于 2014-12-31T10:48:42.060 に答える