標籤:perl es elasticsearch
在搭建Elasticsearch資料庫的過程中,首先使用了其推薦的Logstash工具匯入資料,但是用起來非常不順手,所以想用Perl擅長的Regex對資料進行過濾分類,然後匯入Elasticsearch,於是搜尋CPAN找到了Search::Elasticsearch模組。
該模組在CPAN上的文檔寫的比較簡潔,於是將使用過程中的經驗總結如下:
一、逐條資料寫入:
use Search::Elasticsearch;my $e=Search::Elasticsearch->new(nodes=>[‘localhost:9200‘]);$e->index( index=>"$index_name", type=>"$type_name", id=>"$id_name", body=>{ title=>"$data_name", data=>"$data" });
二、批量資料寫入:
use Search::Elasticsearch;my $e=Search::Elasticsearch->new(nodes=>[‘localhost:9200‘]);my $bulk=$e->bulk_helper( index=>"$index_name", type=>"$type_name");my $i=0;while(...){ #do something $bulk->add_action(index=>{id=>$id_name,source=>{title =>$data_name,data=>$data}}); if ($i>999){ $bulk->flush; $i=0; } $i++;}
三、讀取一條記錄:
use Search::Elasticsearch;my $e=Search::Elasticsearch->new(nodes=>[‘localhost:9200‘]);my $doc=$e->get( index=>"$index_name", type=>"$type_name", id=>"$id_name");my $data=$doc->{_source}->{$data_name};#do something
四、依次讀取全部記錄:
use Search::Elasticsearch;my $e=Search::Elasticsearch->new(nodes=>[‘localhost:9200‘]);my $scroll=$e->scroll_helper( index=>"$index_name", type=>"$type_name", body=>{ query=>{match_all=>{}}, size=>5000 });while (my $doc=$scroll->next){ my $id=$doc->{_id}; my $data=$doc->{_source}->{$data_name}; #do something}
本文出自 “如意靈臨” 部落格,請務必保留此出處http://417722381.blog.51cto.com/7856838/1880794
Perl Search::Elasticsearch模組使用經驗總結