上一篇博客也大概提了下,这里详细说明实现联想的方法。
使用查询中同样的 JSON 请求来定义它们,而且你是使用aggs 来进行标记。需要给每个聚合起一个名字,指定它的类型以及和该类型相关的选项。和查询不匹配的文档不会计算在内。
传入参数:
"query":{
"prefix":{"jobname":"c"}},
"size":"0",
"aggs":{"group_by_key":{"terms":{"field":"jobname","include":"c.*"}}}
}
group_by_key是为聚合指定的名字,使用模糊匹配,以查询语开头。
返回结果:
array (
'took' => '3',
'timed_out' => '',
'_shards' =>
array (
'total' => '3',
'successful' => '3',
'skipped' => '0',
'failed' => '0',
),
'aggregations' =>
array (
'group_by_key' =>
array (
'doc_count_error_upper_bound' => '0',
'sum_other_doc_count' => '9',
'buckets' =>
array (
0 =>
array (
'key' => 'c',
'doc_count' => '13',
),
1 =>
array (
'key' => 'ceo',
'doc_count' => '9',
),
......
),
),
),
)
doc_count_error_upper_bound:表示没有返回的潜在结果。
sum_other_doc_count:表示没有统计到的文档数。
buckets:就是要处理的结果集,key对应查询的内容,doc_count是命中数。