elasticsearch分頁產生的問題記錄

2022-01-10 22:54:11 字數 1613 閱讀 3692

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條有效資料,然後...