目录
ES如果要查10条数据需要从各个分片上各取多少条数据?
简单查询(如 match_all 或 term 查询)
深度分页查询(如 from + size 查询)
聚合查询
什么叫聚合查询?
聚合查询的基本结构
常见的聚合类型
聚合查询的执行过程
聚合查询的示例
聚合查询的应用场景
注意事项
ES如果要查10条数据需要从各个分片上各取多少条数据?
在 Elasticsearch 中,查询数据时,每个分片会返回一定数量的文档,然后协调节点将这些结果汇总并排序,最终返回给用户。具体每个分片返回多少条数据,取决于查询的类型和分片的数量。
假设你有以下条件:
-
索引有
N
个分片。 -
你要查询
10
条数据。
简单查询(如 match_all
或 term
查询)
对于简单的查询,Elasticsearch 会从每个分片上获取 size
条数据(size
是你请求的文档数量),然后协调节点对这些结果进行排序并返回前 size
条。
-
如果你有
N
个分片,并且要查询10
条数据,那么每个分片会返回10
条数据。 -
协调节点会收到
N * 10
条数据,然后对这些数据进行排序,返回前10
条。
深度分页查询(如 from + size
查询)
如果你使用了深度分页(例如 from=1000, size=10
),Elasticsearch 会从每个分片上获取 from + size
条数据。
-
例如,
from=1000, size=10
,每个分片会返回1010
条数据。 -
协调节点会收到
N * 1010
条数据,然后对这些数据进行排序,返回第1000
到1010
条数据。
聚合查询
对于聚合查询,Elasticsearch 会在每个分片上执行聚合操作,然后将结果汇总。每个分片返回的数据量取决于聚合的类型和分片上的数据分布。
总结
-
简单查询:每个分片返回
10
条数据。 -
深度分页查询:每个分片返回
from +