Elasticsearch 搜索索引限制(按类型)

Elasticsearch search index limit by type

我是 elasticsearch 的新手,我正在尝试使用 elasticsearch,搜索 api。

我的索引结构由树类型组成。说 foobarbaz。所有树类型都具有相同的 'name' 键和字符串值,我想要实现的是搜索所有类型,但只检索每种类型的最多 5 个项目。

不过,我想我的多重搜索成功了 API;我想知道我是否可以使用单个查询来维护相同的功能(以获得更好的性能)。

我尽可能多地搜索了互联网。但是,我找不到更好的方法。在 Whosebug 中有一个类似问题的答案,它也提供了多重搜索 api;但是已经两岁了,并且有一个问题。觉得有意义再问

这是我目前使用的msearch:

{"type" : "foo"}
{"query" : {"match": {"name": "bar"}}, "terminate_after": 5}
{"type" : "bar"}
{"query" : {"match": {"name": "bar"}}, "terminate_after": 5}
{"type" : "baz"}
{"query" : {"match": {"name": "bar"}}, "terminate_after": 5}

我认为如果我编写最多包含 4 个结果的查询,将检查所有存储 3 次。

感谢任何帮助。

聚合使用 _type 然后从每个中找到前 5 个:

GET /index/_search 
{
"size": 0,
"query": {
  "match": {
     "name": "bar"
   }
},
"aggs": {
  "group_by_type": {
     "terms": {
        "field": "_type"
     },
     "aggs": {
        "top_5_aggregation": {
            "top_hits":{
                "size" :5
             }
          }
       }
     }
  }  
}