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