elasticsearch返回唯一值

时间:2015-03-16 15:45:22

标签: elasticsearch

我有一个名为'category'的字段。

我可以通过以下方式返回可能的类别列表:

$searchParams['body']['aggs']['category']['terms']['field'] = 'category'; 

但我想在该字段内搜索并仅返回与我的查询匹配的类别。

示例列表:

  1. 披萨
  2. Apple pie
  3. 橙子馅饼
  4. 蛋糕
  5. 汉堡
  6. 我想搜索“馅饼”并得到以下结果:

    1. Apple pie
    2. 橙子馅饼
    3. 有200多个类别。我想用弹性搜索方式做这个,而不是用MySQL作为搜索。

      感谢所有帮助:)

1 个答案:

答案 0 :(得分:0)

聚合在"scope" of the query中运行。因此,如果您对"pie"执行搜索查询,则聚合将仅查看(并聚合)“饼”文档。

$query = [
    'index' => 'my_index',
    'type' => 'my_type',
    'search_type' => 'count',  // <-- Note search_type = count, to ignore search hits
    'body' => [
        'query' => [
            'match' => [
                'category' => 'pie'
            ]
        ],
        'aggs' => [
            'category' => [
                'terms' => [
                    'field' => 'category'
                ]
            ]
        ]
    ]
];

$results = $client->search($query);