类型的弹性搜索限制结果

时间:2012-12-11 11:00:22

标签: elasticsearch

我有以下查询

$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个结果,用于自动完成。当我设置过滤器限制时,只过滤第一种类型的结果,对于其他类型,我得到所有结果。

我该怎么做?

感谢

1 个答案:

答案 0 :(得分:0)

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

如果您正在使用ElasticSearch 1.4.0,则可以在" _type"上使用terms aggregation。字段并使用top hits aggregation作为子聚合并将其大小设置为3(在您的情况下)。

希望有所帮助。