我有一个包含多个索引的 Elasticsearch 设置(例如 a、b、c、d、e 和 f)。我的目标是总共检索 20 个文档,每个索引恰好有 4 个文档。但是,如果任何索引的文档少于 4 个,我想从其他索引中填充剩余的文档。
例如:
a = 4
b = 4
c = 4
d = 4
e = 4
Total = 20
如果任何索引的文档少于 4 个:
a = 3
b = 4 or 5
c = 4 or 5
d = 4 or 5
e = 4 or 5
Total = 20
实现此目的的 Elasticsearch 查询或有效负载应该是什么?
目前的方法:
{
"index": [
"_all"
],
"body": {
"query": {
"match_all": {}
},
"size": 20,
"sort": {
"created_at": "desc"
}
}
}
感谢任何帮助或指导。
提前致谢!
我可能会使用 多搜索 API 来执行此操作并分别查询每个索引,如下所示:
POST /_msearch
{"index": "a"}
{"size": 10, "sort": {"created_at": "desc"}, "query" : {"match_all" : {}}}
{"index": "b"}
{"size": 10, "sort": {"created_at": "desc"}, "query" : {"match_all" : {}}}
{"index": "c"}
{"size": 10, "sort": {"created_at": "desc"}, "query" : {"match_all" : {}}}
{"index": "d"}
{"size": 10, "sort": {"created_at": "desc"}, "query" : {"match_all" : {}}}
{"index": "e"}
{"size": 10, "sort": {"created_at": "desc"}, "query" : {"match_all" : {}}}
另请注意,我为每个索引检索超过 4 个命中,对于索引命中少于 4 个的情况,您可以从另一个索引中选择另一个命中。