在 Elasticsearch 中限制每个文档类型的结果
Limit results per document type in Elasticsearch
我正在使用 Elasticsearch(版本 2.3)在具有多种文档类型的索引中进行搜索。 我想将结果数限制为每种文档类型的前 X 次搜索命中。如何实现?
查询非常简单明了:
{
"sort": [
{
"_type": {
"order": "asc"
}
}
],
"query": {
"query_string": {
"query": "[some search query here]"
}
}
}
我在 找到了答案,但似乎自版本 1.4.0 以来语法可能发生了变化,因为我只收到以下错误消息:
"reason": {
"type": "search_parse_exception",
"reason": "Found two aggregation type definitions in [types]: [terms] and [hits]",
"line": 1,
"col": 44
}
我会在 type
元字段上使用 terms
聚合,然后使用 top_hits
子聚合,如下所示:
{
"size": 0,
"aggs": {
"types": {
"terms": {
"field": "_type"
},
"aggs": {
"topten": {
"top_hits": {
"size": 10
}
}
}
}
}
}
我正在使用 Elasticsearch(版本 2.3)在具有多种文档类型的索引中进行搜索。 我想将结果数限制为每种文档类型的前 X 次搜索命中。如何实现?
查询非常简单明了:
{
"sort": [
{
"_type": {
"order": "asc"
}
}
],
"query": {
"query_string": {
"query": "[some search query here]"
}
}
}
我在 找到了答案,但似乎自版本 1.4.0 以来语法可能发生了变化,因为我只收到以下错误消息:
"reason": {
"type": "search_parse_exception",
"reason": "Found two aggregation type definitions in [types]: [terms] and [hits]",
"line": 1,
"col": 44
}
我会在 type
元字段上使用 terms
聚合,然后使用 top_hits
子聚合,如下所示:
{
"size": 0,
"aggs": {
"types": {
"terms": {
"field": "_type"
},
"aggs": {
"topten": {
"top_hits": {
"size": 10
}
}
}
}
}
}