最近在使用 Elasticsearch 進(jìn)行大文件導(dǎo)出時(shí),遇到了一個(gè)問題:導(dǎo)出的 JSON 不全,部分?jǐn)?shù)據(jù)沒有被導(dǎo)出。經(jīng)過一番調(diào)查,發(fā)現(xiàn)是因?yàn)樵趯?dǎo)出數(shù)據(jù)時(shí)默認(rèn)只獲取了前 10 條數(shù)據(jù)。
為了解決這個(gè)問題,我們需要在導(dǎo)出數(shù)據(jù)時(shí)指定一個(gè)更大的size
參數(shù)值(默認(rèn)情況下是 10),以便能獲取全部數(shù)據(jù)。另外,我們還需要使用scroll
API 來保持?jǐn)?shù)據(jù)的持久性,確保數(shù)據(jù)能被一直導(dǎo)出,而不會(huì)在 Elasticsearch 默認(rèn)的 1 分鐘后被清除。
下面是一個(gè)示例代碼:
POST test_index/_search?scroll=1m { "size": 1000, "query": { "match_all": {} } }
在這個(gè)示例中,我們指定了size
參數(shù)值為 1000(也可根據(jù)實(shí)際情況自行設(shè)置)。此外,我們還使用了scroll
API,將 timeout 值設(shè)為 1 分鐘,確保數(shù)據(jù)能一直被保留。
總之,在進(jìn)行大文件導(dǎo)出時(shí),我們不僅需要指定更大的size
參數(shù)值,還需使用scroll
API 保持?jǐn)?shù)據(jù)的持久性。只有這樣,我們才能成功地導(dǎo)出 Elasticsearch 中的大文件數(shù)據(jù)。