鍍金池/ 教程/ Java/ 分頁(yè)
創(chuàng)建索引
文檔局部更新
映射
查詢與過(guò)濾條件的合并
取回階段
查詢地理形狀
相關(guān)性簡(jiǎn)介
動(dòng)態(tài)索引
處理沖突
geohash單元聚合器
主分片和復(fù)制分片如何交互
自定義分析器
下一步
過(guò)濾順序
空集群
數(shù)據(jù)吞吐
地理坐標(biāo)點(diǎn)
嵌套-映射
動(dòng)態(tài)映射
在查詢中使用已索引的形狀
局部更新文檔
包含,而不是相等
范圍
檢索文檔
映射及分析
結(jié)語(yǔ)
結(jié)構(gòu)化查詢 Query DSL
驗(yàn)證查詢
查找準(zhǔn)確值
Geohashes
結(jié)構(gòu)化搜索
復(fù)合核心字段類(lèi)型
嵌套-集合
與Elasticsearch交互
請(qǐng)求體查詢
自定義動(dòng)態(tài)索引
簡(jiǎn)易搜索
索引一個(gè)文檔
地理形狀
緩存地理位置過(guò)濾器
多文檔模式
  • 1.
分布式搜索的執(zhí)行方式
安裝Elasticsearch
地理位置聚合
分析和分析器
元數(shù)據(jù):_all 字段
地理坐標(biāo)盒模型過(guò)濾器
類(lèi)型和映射
合并段
查詢多個(gè)準(zhǔn)確值
嵌套-查詢
  • 1.
為什么是奇怪的格式?
Geohashes 映射
關(guān)于緩存
開(kāi)始第一步
為了搜索,你懂的
分布式的特性
添加索引
確切值(Exact values) vs. 全文文本(Full text)
掃描和滾屏
相關(guān)性排序
教程小結(jié)
數(shù)據(jù)字段
增加故障轉(zhuǎn)移
按距離排序
索引管理
分布式文檔存儲(chǔ)
geohash單元過(guò)濾器
嵌套排序
檢索多個(gè)文檔
新建、索引和刪除文檔
Geohashes
檢索文檔
減少內(nèi)存占用
重新索引數(shù)據(jù)
檢索文檔
按距離聚合
什么是文檔?
繼續(xù)擴(kuò)展
集群健康
入門(mén)
映射(mapping)
近實(shí)時(shí)搜索
地理形狀的過(guò)濾與緩存
集群內(nèi)部工作方式
應(yīng)對(duì)故障
范圍(邊界)聚合器
分析
分頁(yè)
刪除文檔
倒排索引
索引地理形狀
嵌套-對(duì)象
  • 1.
橫向擴(kuò)展
查詢階段
元數(shù)據(jù):_source 字段
多索引和多類(lèi)別
路由文檔到分片
索引設(shè)置
williamzhao
多值字段字符串排序
創(chuàng)建一個(gè)新文檔
配置分析器
地理形狀
更新整個(gè)文檔
面向文檔
處理 Null 值
映射地理形狀
使文本可以被搜索
索引別名和零停機(jī)時(shí)間
通過(guò)地理坐標(biāo)點(diǎn)過(guò)濾
地理距離過(guò)濾器
搜索——基本的工具
空搜索
搜索選項(xiàng)
更新時(shí)的批量操作
最重要的查詢過(guò)濾語(yǔ)句
結(jié)語(yǔ)
組合過(guò)濾
地理位置聚合
根對(duì)象
默認(rèn)映射
文檔 ID
持久化變更
檢查文檔是否存在
入門(mén)
地理坐標(biāo)點(diǎn)

分頁(yè)

分頁(yè)

《空搜索》一節(jié)告訴我們?cè)诩褐杏?4個(gè)文檔匹配我們的(空)搜索語(yǔ)句。但是只有10個(gè)文檔在hits數(shù)組中。我們?nèi)绾慰吹狡渌臋n?

和SQL使用LIMIT關(guān)鍵字返回只有一頁(yè)的結(jié)果一樣,Elasticsearch接受fromsize參數(shù):

size: 結(jié)果數(shù),默認(rèn)10

from: 跳過(guò)開(kāi)始的結(jié)果數(shù),默認(rèn)0

如果你想每頁(yè)顯示5個(gè)結(jié)果,頁(yè)碼從1到3,那請(qǐng)求如下:

GET /_search?size=5
GET /_search?size=5&from=5
GET /_search?size=5&from=10

應(yīng)該當(dāng)心分頁(yè)太深或者一次請(qǐng)求太多的結(jié)果。結(jié)果在返回前會(huì)被排序。但是記住一個(gè)搜索請(qǐng)求常常涉及多個(gè)分片。每個(gè)分片生成自己排好序的結(jié)果,它們接著需要集中起來(lái)排序以確保整體排序正確。

在集群系統(tǒng)中深度分頁(yè)

為了理解為什么深度分頁(yè)是有問(wèn)題的,讓我們假設(shè)在一個(gè)有5個(gè)主分片的索引中搜索。當(dāng)我們請(qǐng)求結(jié)果的第一頁(yè)(結(jié)果1到10)時(shí),每個(gè)分片產(chǎn)生自己最頂端10個(gè)結(jié)果然后返回它們給請(qǐng)求節(jié)點(diǎn)(requesting node),它再排序這所有的50個(gè)結(jié)果以選出頂端的10個(gè)結(jié)果。

現(xiàn)在假設(shè)我們請(qǐng)求第1000頁(yè)——結(jié)果10001到10010。工作方式都相同,不同的是每個(gè)分片都必須產(chǎn)生頂端的10010個(gè)結(jié)果。然后請(qǐng)求節(jié)點(diǎn)排序這50050個(gè)結(jié)果并丟棄50040個(gè)!

你可以看到在分布式系統(tǒng)中,排序結(jié)果的花費(fèi)隨著分頁(yè)的深入而成倍增長(zhǎng)。這也是為什么網(wǎng)絡(luò)搜索引擎中任何語(yǔ)句不能返回多于1000個(gè)結(jié)果的原因。

TIP

在《重建索引》章節(jié)我們將闡述如何能高效的檢索大量文檔