首页 > 代码库 > Perl Search::Elasticsearch模块使用经验总结

Perl Search::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=http://www.mamicode.com/>"$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=http://www.mamicode.com/>$data}});>


三、读取一条记录:

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=http://www.mamicode.com/$doc->{_source}->{$data_name};>


四、依次读取全部记录:

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=http://www.mamicode.com/$doc->{_source}->{$data_name};>


本文出自 “如意灵临” 博客,请务必保留此出处http://417722381.blog.51cto.com/7856838/1880794

Perl Search::Elasticsearch模块使用经验总结