[英]GROUP BY in elasticsearch using “aggs”, not working for me in PHP
我是Elasticsearch的新手,我想在Elasticsearch中使用GROUP BY等效项来获取从“过滤器”获得的结果。
我尝试使用“ ggs”来执行此操作,但不确定如何操作。
$params = [
'index' => $table_name,
'type' => '_doc',
'size' => 4894,
'body' => [
'query' => [
'aggs' => [
'some_key_to_group_by' => [
'bool' => [
'filter' => [
['terms' => ['key1' => $array1]],
['terms' => ['key2' => $array2]],
['terms' => ['key3' => $array3]],
['terms' => ['key4' => $array4]]
]
]
]
]
]
]
];
我已经得到了关于任何内容都没有分组的结果,现在我希望得到分组的响应,但是回显的结果是这样的……
{"error":{"root_cause":[{"type":"parsing_exception","reason":"no
[query] registered for [aggs]","line":1,"col":18}]
看来您正在混合查询和聚合。 aggs
部分是query
1的兄弟,而不是子query
:
这应该工作:
$params = [
'index' => $table_name,
'type' => '_doc',
'size' => 0,
'body' => [
'query' => [
'bool' => [
'filter' => [
['terms' => ['key1' => $array1]],
['terms' => ['key2' => $array2]],
['terms' => ['key3' => $array3]],
['terms' => ['key4' => $array4]]
]
]
],
'aggs' => [
'some_key_to_group_by' => [
'terms' => ['field' => 'key1', 'size' => 100]
]
]
]
];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.