Elasticsearch:将滚动 API 与切片一起使用时为空切片



我有一个简单的设置,有一个绿色集群 (v7.5.2(,有 1 个实例,有 1 个索引(副本 0(,有 8 个分片。 索引了 61,500 个文档。

如果我使用这些查询创建 8 个切片(POST 查询(

http://localhost:9202/products_dev/_search?scroll=10m: {'slice': {'field': 'created_at', 'id': 0, 'max': 8}, 'size': 1000}
http://localhost:9202/products_dev/_search?scroll=10m: {'slice': {'field': 'created_at', 'id': 1, 'max': 8}, 'size': 1000}
...
http://localhost:9202/products_dev/_search?scroll=10m: {'slice': {'field': 'created_at', 'id': 7, 'max': 8}, 'size': 1000}

对于每个切片,我收集每个切片的第一次点击并得到这些长度:[1000, 0, 0, 0, 0, 0, 0, 0]

只有 1 个切片具有结果,这相当于一开始就没有对索引进行切片。

我使用这些命令尝试了最多 32 个:

http://localhost:9202/products_dev/_search?scroll=10m: {'slice': {'field': 'created_at', 'id': 0, 'max': 32}, 'size': 1000}
http://localhost:9202/products_dev/_search?scroll=10m: {'slice': {'field': 'created_at', 'id': 1, 'max': 32}, 'size': 1000}
...
http://localhost:9202/products_dev/_search?scroll=10m: {'slice': {'field': 'created_at', 'id': 31, 'max': 32}, 'size': 1000}

对于每个切片,我收集每个切片的第一次点击并得到这些长度:[1000, 0, 0, 0, 0, 0, 0, 0, 1000, 0, 0, 0, 0, 0, 0, 0, 1000, 0, 0, 0, 0, 0, 0, 0, 1000, 0, 0, 0, 0, 0, 0, 0]

这样我可以使用 4 个不同的(非空(切片滚动我的索引,但我必须创建 32 个上下文,这并不理想。

我做错了什么?

我尝试使用日期作为切片字段

"slice": {
"field": "created_at",

但这并没有帮助。

我的本地索引的文档很少,大多数文档都保存在 1 个分片中

最新更新