我想从大约60个ES索引中抽取2000个随机文档,每个索引持有大约5000万个文档,总共大约30亿个文档。我已尝试在Kibana Dev Tools页面上执行以下操作:
GET some_index_abc_*/_search
{
"size": 2000,
"query": {
"function_score": {
"query": {
"match_phrase": {
"field_a": "some phrase"
}
},
"random_score": {}
}
}
}
但是这个查询永远不会返回。在刷新Dev Tools页面后,我得到一个页面,告诉我ES群集状态为红色(似乎不是巧合 - 我已多次尝试过)。没有随机函数的其他查询(计数,简单的match_all查询)工作正常。我已经读过,功能评分查询往往很慢,但使用随机功能评分是我能从ES获取随机文档的唯一方法。我想知道是否有其他更快的方法可以从多个大型ES索引中对随机文档进行采样。
编辑:如果可能的话,我想完全使用内置的ES功能进行随机抽样 - 我不想写任何代码到例如在我的最后实施水库采样。我也尝试用更小的文件运行我的查询--10个文档 - 我得到了与2000相同的结果。