需求:
項(xiàng)目需要導(dǎo)出知識(shí)庫(kù)博客文章數(shù)據(jù),格式為json;
知識(shí)庫(kù)系統(tǒng)部署在內(nèi)網(wǎng),沒(méi)有node和elasticdump數(shù)據(jù)導(dǎo)出工具,需要離線安裝node和elasticdump,方法是找一臺(tái)與內(nèi)網(wǎng)配置一樣的外網(wǎng)機(jī)器在線安裝node和elasticdump環(huán)境,再把安裝包導(dǎo)入內(nèi)網(wǎng)安裝。
備注:使用的機(jī)器是x86+銀行麒麟V4桌面版操作系統(tǒng)
導(dǎo)出步驟:
一、外網(wǎng)安裝node環(huán)境
# 1.下載node安裝包,命令行或網(wǎng)頁(yè)下載,我下載的是V16版本,使用elasticdump盡量安裝10版本以上的:
wget https://nodejs.org/dist/v16.14.2/node-v16.14.2-linux-x64.tar.gz
# 2. 把壓縮包移動(dòng)到安裝路徑下(注意:不要先解壓,否則一些命令鏈接會(huì)失效),進(jìn)入目錄下解壓,
# 我的安裝路徑是/usr/lib,也可以放到其他目錄下
mv node-v16.14.2-linux-x64.tar.gz /usr/lib
cd /usr/lib
tar -xzvf node-v16.14.2-linux-x64.tar.gz
# 3. 建立命令的軟連接,就是文件的快捷方式,把這個(gè)快捷方式發(fā)送到/usr/local/bin
#(有的系統(tǒng)放/usr/bin);
ln -s /usr/lib/node-v16.14.2-linux-x64/bin/node /usr/local/bin
ln -s /usr/lib/node-v16.14.2-linux-x64/bin/npm /usr/local/bin
# 4. 檢測(cè)環(huán)境,不出意外會(huì)看到版本信息,如果報(bào)錯(cuò),檢測(cè)安裝過(guò)程,重新安裝:
node -v
npm -v
二、外網(wǎng)安裝elasticdump
# 1.使用npm命令安裝elasticdump :
npm install elasticdump -g
# 2. 建立elasticdump命令軟鏈接
ln -s /usr/lib/node-v16.14.2-linux-x64/lib/node_modules/elasticdump/bin/elasticdump /usr/local/bin/elasticdump
# 3. 檢測(cè)環(huán)境,安裝成功,會(huì)看到elasticdump幫助信息,導(dǎo)出數(shù)據(jù)時(shí)需要查看這些幫助參數(shù)的用法:
elasticdump --help
三、內(nèi)網(wǎng)離線安裝node和elasticdump
在線安裝成功后,把node的安裝包和elasticdump安裝后的緩存打包導(dǎo)入內(nèi)網(wǎng),進(jìn)行安裝,
以下是導(dǎo)出緩存和離線安裝步驟:
- 導(dǎo)出緩存包
# 1. 查看npm緩存路徑,我的是/root/.npm
npm config get cache
# 2.把elasticdump安裝后的緩存目錄打包
cd /root
tar -cf npm-cache.tar .npm
打包完成后在/root目錄下生成npm-cache.tar文件
把在線下載的node-v16.14.2-linux-x64.tar.gz 和 npm-cache.tar
- 離線安裝node和elasticdump
# 1.參見(jiàn)外網(wǎng)步驟安裝node,安裝完的目錄為:/usr/lib/node-v16.14.2-linux-x64
# 2.拷貝npm-cache.tar到/root,并解壓縮
mv npm-cache.tar /root
cd /root
tar -xvf npm-cache.tar
# 3.先進(jìn)入/usr/lib/node-v16.14.2-linux-x64/bin安裝elasticdump
cd /usr/lib/node-v16.14.2-linux-x64/bin
# --cache-min這個(gè)參數(shù)是指超過(guò)多少分鐘,才去網(wǎng)絡(luò)下載,設(shè)置足夠大就會(huì)從緩存安裝
npm install --cache /root/.npm --optional --cache-min 9999999 -shrinkwarp false elasticdump
# 4.創(chuàng)建軟連接
ln -s /usr/lib/node-v16.14.2-linux-x64/lib/node_modules/elasticdump/bin/elasticdump /usr/local/bin/elasticdump
# 5. 檢測(cè)環(huán)境,安裝成功,會(huì)看到elasticdump幫助信息,導(dǎo)出數(shù)據(jù)時(shí)需要查看這些幫助參數(shù)的用法:
elasticdump --help
四、elasticdump導(dǎo)出數(shù)據(jù)示例
- elasticsearch常用查詢語(yǔ)句,地址粘貼到瀏覽器查看,若在終端使用curl命令
> 1.查詢elasticsearch 語(yǔ)句查看現(xiàn)有es index doc數(shù)量:
> http://ip:9200/_cat/indices?v
>
> 2.查詢某個(gè)index下文章數(shù)量
> http://ip:9200/_cat/count/index_name?v
>
> 3.查看索引mapping:
> http://ip:9200/索引名稱/_mapping?pretty
>
> 4.按某字段搜索,其中attach_type是字段名稱,mp4是字段值:
> http://ip:9200/索引名稱/_search?q=attach_type:mp4(搜索類型為MP4的doc)
>
> 5.控制返回?cái)?shù)據(jù)的數(shù)量
> http://ip:9200/索引名稱/_search?size=2
>
> 6.按id搜索doc:
> http://ip:9200/索引名稱/_doc/#id值
- elasticdump導(dǎo)出語(yǔ)句(以下示例若在終端不能正常運(yùn)行,可能是含有中文字符,空格\等特殊字符刪除后重新手動(dòng)輸入一遍)
基本的導(dǎo)入導(dǎo)出,可通過(guò)終端elasticdump --help查看
1.從一個(gè) elasticsearch導(dǎo)入到另一個(gè) elasticsearch
1)mapping導(dǎo)入
elasticdump \
--input=http://production.es.com:9200/my_index \
--output=http://staging.es.com:9200/my_index \
--type=mapping
2)data導(dǎo)入
elasticdump \
--input=http://production.es.com:9200/my_index \
--output=http://staging.es.com:9200/my_index \
--type=data
2.導(dǎo)出成json文件
1)按create_time字段的時(shí)間范圍篩選數(shù)據(jù)并導(dǎo)出json,并按該字段倒序排列
term 是要篩選的字段和值,這里針對(duì)有id字段的數(shù)據(jù),type替換為id,把blog替換為id值,可以篩選出唯一的數(shù)據(jù)
elasticdump --input=http://192.168.8.9:9200/all_prod_v8_main \
--output=/opt/data/data_1000_20230524.json \
--type=data \
--searchBody='{"query":{"bool":{"must":[{"term":{"type":"blog"}},{"range":{"create_time":{"gte":"2020-01-01","lt":"2022-02-01"}}}],"must_not":[],"should":[]}},"sort":[{"create_time":{"order":"desc"}}],"aggs":{}}'
2)控制導(dǎo)出數(shù)據(jù)的數(shù)量,導(dǎo)出10000條數(shù)據(jù)
elasticdump --input=http://192.168.8.9:9200/all_prod_v8_main \
--output=/opt/data/data_10000_20230524.json \
--type=data \
--size=10000 \
--searchBody='{"query":{"bool":{"must":[{"term":{"type":"blog"}}],"must_not":[],"should":[]}},"sort":[{"create_time":{"order":"desc"}}],"aggs":{}}'
3)全部導(dǎo)出,依據(jù)文件大小進(jìn)行自動(dòng)分隔(也可依據(jù)行數(shù)進(jìn)行分割–maxRows),20Mb左右一個(gè)文件,導(dǎo)出過(guò)程自動(dòng)把文件進(jìn)行分割,
#–limit 每次請(qǐng)求數(shù)據(jù)的數(shù)量,默認(rèn)100,要導(dǎo)出的數(shù)據(jù)量大時(shí),此值改大提高效率
#–fileSize(–maxRows):對(duì)導(dǎo)出的數(shù)據(jù)按文件大小或按行數(shù)分割成多個(gè)文件
#–overwrite 存儲(chǔ)路徑文件存在進(jìn)行覆蓋
#-- 更多參數(shù)終端輸入elasticdump --help查看文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-778725.html
elasticdump --input=http://192.168.8.9:9200/all_prod_v8_main \
--output=/opt/data/20Mb/data_20mb_20230524.json \
--type=data \
--limit=1000 \
--fileSize=20mb \
--overwrite=true \
--searchBody='{"query":{"bool":{"must":[{"term":{"type":"blog"}}],"must_not":[],"should":[]}},"sort":[{"create_time":{"order":"desc"}}],"aggs":{}}'
文章參考:
https://blog.csdn.net/su8888i/article/details/130287754文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-778725.html
到了這里,關(guān)于離線安裝elasticdump導(dǎo)出elasticsearch數(shù)據(jù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!