目錄
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 +