Elasticsearch 搜索索引限制(按类型)
Elasticsearch search index limit by type
我是 elasticsearch 的新手,我正在尝试使用 elasticsearch,搜索 api。
我的索引结构由树类型组成。说 foo
、bar
和 baz
。所有树类型都具有相同的 '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
}
}
}
}
}
}
我是 elasticsearch 的新手,我正在尝试使用 elasticsearch,搜索 api。
我的索引结构由树类型组成。说 foo
、bar
和 baz
。所有树类型都具有相同的 '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
}
}
}
}
}
}