1.問題產生:當從es中查出跨度為好幾個月的日誌時,直接點選第三千多頁時出現錯誤查不出資料。
2.問題產生原因分析:首先使用者查詢跨度好幾個月的日誌然後直接點選第三千多頁,也就是說使用者要查第三萬多條的日誌記錄。這一操作就會導致es返回不了相應的資料。因為elasticsearch是分布式搜尋引擎,索引的資料拆分儲存在各個分片中的,每個分片可能會散布在es集群的各個節點上。這樣的話分頁查詢就不同於傳統的資料庫,就拿使用者的操作來說,他要查第三千頁的資料(每頁十條),平均每個月的日誌索引會有將近三十萬條日誌資料,那麼就是在每個索引中取出30010條然後彙總再進行排序取最後的十條。當索引中分片數越多的時候,需要彙總的資料會成倍增長,這種直接查幾千頁的查詢操作可能會拖垮es集群。
那麼就仿照把分頁改成這種樣式
<template
>
<
div
class
="paging-all"
>
<
div
class
="page-size"
>共}頁
div>
<
ul>
<
li @click
="pagechange(currentpage - 1)"
>
li>
<
li :class
="currentpage === item.val ? 'active' : ''"
v-for
="item in pagelist"
v-text
="item.text"
@click
="pagechange(item.val)"
>
li>
<
li @click
="pagechange(currentpage + 1)"
>
li>
ul>
div>
template
>
<
script
>
export
default
, total: ,
currentpage:
},data ()
},computed: ,
pagelist ()
else
} else
}while
(left
<=
right) )
left++}
return
list}},
methods: )}}
}}script
>
<
style
lang
="stylus"
scoped
>
.paging-all
.page-size
ul ul li
&.active
}style
>
Elasticsearch 分頁問題
1.form和size的方式 2.scroll api 3.search after引數 按照一般的查詢流程來說,如果我想查詢前10條資料 1 客戶端請求發給某個節點 2 節點 給個個分片,查詢每個分片上的前10條 3 結果返回給節點,整合資料,提取前10條 4 返回給請求客戶端 該分頁方式可以通過...
ElasticSearch 分頁查詢
在預設情況下,elasticsearch 查詢返回前10條匹配的文件。為了對大批量查詢結果分頁,最簡單方式是在查詢api中新增from和size引數,from表示需要返回的滿足查詢條件的數量,size表示查詢起始資料在全量結果集中的偏移量。建立實驗索引 put linked blog get lin...
elasticsearch深度分頁索引
背景 es 深度分頁索引效率問題 1.常見深度分頁方式 from size es 預設採用的分頁方式是 from size 的形式,在深度分頁的情況下,這種使用方式效率是非常低的,比如 from 5000,size 10000,es 需要在各個分片上匹配排序並得到5000 10000條有效資料,然後...