客戶端向集群中的某個節點(假設節點1)發起查詢請求,節點1會建立乙個from+size大小的佇列(from:偏移量,size:要取回的文件個數)。
節點1向集群中所有其他的分片(主或從)發起查詢請求,每個分片也會建立乙個from+size大小的佇列,並將查詢結果新增到佇列中。
其他分片將查詢到的文件id和排序值傳送給節點1,節點1將所有結果進行合併並排序,新增到佇列中
節點1根據文件id發出請求到相關分片,相關分片查詢出結果,並將結果返回給節點1
節點1將結果返回給客戶端
由上可以看出當from偏移量較大時(size分頁一般是預設大小),會對單機造成較大壓力,匯聚結果的節點要對 分片個數 * (from + size)個文件進行歸併,應從業務上盡量避免這種大分頁
參考自:
ElasticSearch 翻頁查詢
相對於ealsticsearch的search api,翻頁查詢可以將查詢結果集分頁返回,而不是將所有的結果放在乙個page返回。如果查詢的結果集包含大量的資料,就可以用到翻頁查詢 scroll api,比如有200k條資料,可以將它們分成20次請求,每次只返回10k條查詢結果.有點類似於資料庫裡面...
ElasticSearch 查詢語法
author title publish date form指定從 返回 size指定返回數量 from 1 size 1 sort group by publish date 特定字段查詢所指特定值 query context 會根據匹配程度生成不同的匹配分數 全文本查詢針對文字型別 字段級別查詢...
elasticsearch高亮查詢
pageinfo elasticsearchtemplate.queryforpage query,article.class 帶條件的分頁查詢 test public void testselectpagebyid 建立querybuilder查詢條件 querybuilder querybuil...