PerlSearch::Elasticsearch模块使用经验总结-创新互联
在搭建Elasticsearch数据库的过程中,首先使用了其推荐的Logstash工具导入数据,但是用起来非常不顺手,所以想用Perl擅长的正则表达式对数据进行过滤分类,然后导入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
}五、跳转到第$n条数据开始读取
my $doc=$scroll->next($n);
六、基本数据查询
use strict;
use Search::Elasticsearch;
my $e = Search::Elasticsearch->new(nodes => ['localhost:9200']);
my $results = $e->search(
index => $index_name,
body => {
query => {
query_string => { query => $search }
}
}
);
print $results->{hits}->{hits}->[0]->{_source}->{word};另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
本文标题:PerlSearch::Elasticsearch模块使用经验总结-创新互联
本文地址:http://www.jxjierui.cn/article/dsehjo.html


咨询
建站咨询
