1. es 版本5.5
2. es 是三台服务器的集群。
3. es 索引 5个分配,两个复制分片。
我有一个 type 有 1w 多条的文档记录。
index 设置的最大查询size 是1w
使用 bool查询,查询某个type下的全量数据,
查询如下 :
---在程序里构造must 条件,没有传条件,则must 为空,来获取所有的文档。
{
"query": {
"bool": {
"must": [
]
}
},
"from":0,
"size":10000
}
使用了while 循环,如果total > 1w ,则from += 1w 然后再次查询,并且汇总数据和返回。
这时出现问题了:
汇总后的数据里,有数据重复。
后来看了一下,查询的文档,打分都是1.
"_score": 1,
【问题】
1. 通过bool 查询得到的结果,使用from size 的分页查询,是不是就有问题,不能这么用?
2.如果我需要使用 from size 来分页,是不是我还必须要指定一个 唯一的字段作为排序字段来排序呢?
2. es 是三台服务器的集群。
3. es 索引 5个分配,两个复制分片。
我有一个 type 有 1w 多条的文档记录。
index 设置的最大查询size 是1w
使用 bool查询,查询某个type下的全量数据,
查询如下 :
---在程序里构造must 条件,没有传条件,则must 为空,来获取所有的文档。
{
"query": {
"bool": {
"must": [
]
}
},
"from":0,
"size":10000
}
使用了while 循环,如果total > 1w ,则from += 1w 然后再次查询,并且汇总数据和返回。
这时出现问题了:
汇总后的数据里,有数据重复。
后来看了一下,查询的文档,打分都是1.
"_score": 1,
【问题】
1. 通过bool 查询得到的结果,使用from size 的分页查询,是不是就有问题,不能这么用?
2.如果我需要使用 from size 来分页,是不是我还必须要指定一个 唯一的字段作为排序字段来排序呢?
2 个回复
kepmoving - 90后
赞同来自: MoFanDon
rochy - rochy_he
赞同来自:
如果你的结果超过了 1W 条,不推荐 from+size 的方式获取数据
推荐使用 scroll 的方式,类似传统数据库的游标