我有以下查询
$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个结果,用于自动完成。当我设置过滤器限制时,只过滤第一种类型的结果,对于其他类型,我得到所有结果。
我该怎么做?
感谢
答案 0 :(得分:0)
{
"aggregations": {
"types": {
"terms": {
"field": "_type"
},
"hits": {
"top_hits": {
"size": 3
}
}
}
}
}
如果您正在使用ElasticSearch 1.4.0,则可以在" _type"上使用terms aggregation。字段并使用top hits aggregation作为子聚合并将其大小设置为3(在您的情况下)。
希望有所帮助。