Elasticsearch查询从每个索引中检索固定数量的文档

34gzjxbg  于 5个月前  发布在  ElasticSearch
关注(0)|答案(1)|浏览(48)

我有一个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"
        }
    }
}


任何帮助或指导都是值得赞赏的。
先谢谢你了!

nlejzf6q

nlejzf6q1#

我可能会使用multi-search 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个的情况,您可以从另一个索引中选择另一个命中数。

相关问题