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=>"$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
}
时间: 2024-10-03 21:42:31

Perl Search::Elasticsearch模块使用经验总结的相关文章

perl HTML::LinkExtor模块(1)

1 use LWP::Simple; 2 use HTML::LinkExtor; 3 4 $html = get("http://www.baidu.com"); 5 $link = HTML::LinkExtor->new(\&check); 6 $link->parse($html); 7 8 sub check{ 9 ($tag, %links) = @_; 10 print "$tag\n"; 11 foreach $key(keys

安装Perl Excel读取模块

在Win7上,进入VisualStudio2008的cmd line prompt perl -MCPAN -e shell install Spreadsheet::ParseExcel install Spreadsheet::ParseExcel::FmtUnicode install Unicode::Map 不过安装Win32::GUI失败,编译问题 参考Perl Excel读取 http://www.cnblogs.com/pangxiaodong/archive/2012/01/3

python elasticsearch模块使用

环境 : pyhton3 加载模块 from elasticsearch import Elasticsearch 连接ES es = Elasticsearch(["172.30.6.12"]) 查询 res = es.search(index="test-index", body={"query":{"match_all":{}}}) # 查询请求主机是ai.baidu.com 所有信息 res = es.search(i

perl File::Spec 模块

File::Spec 模块提供了很多的功能,这里只列举几个常用的函数 rel2abs : 返回一个文件的绝对路径, 常见用法,返回当前运行的perl脚本的绝对路径 代码示例: my $prog = File::Spec->rel2abs( __FILE__ ); 其中 __FILE__ 是一个内置变量,代表当前脚本: splitpath : 将文件的路径进行分割,返回值为一个长度为3的列表,第一个元素为该文件,第二个元素为该文件所处的目录,第三个元素为该文件的名字 代码示例: my $prog

perl Mail::Sender模块发送邮件

1 #!/usr/bin/perl -w 2 use strict; 3 use Mail::Sender; 4 5 my $count = 1; 6 while(1){ 7 my $sender = Mail::Sender->new({ 8 smtp => 'smtp.163.com', 9 #这里以163为例 10 from => '这里写你的163邮箱地址:[email protected]', 11 auth => 'LOGIN', 12 authid => '这里

perl中的模块安装

psl:perlstandard library,主要研究perl的内建函数 perl的模块有内建模块和第三方模块. perldoc   perlocal     查看内置模块 perldoc   module-name  查看模块帮助信息 perldoc   -m   module-name  查看模块源代码 手动安装CPAN上的第三方模块: perl   Makefile.PL perl   Makefile.PL   PREFIX=yourpath   #安装到指定目录 make make

Perl List::Util模块用法详解

本文介绍Perl标准库List::Utils中的列表工具,有时候它们非常好用.比如Perl中测试列表中是否包含某个元素(某个元素是否存在于列表中)没有比较直接比较方便的功能,但使用List::Utils中的first或any函数,则非常方便且高效.此外,该模块都有对应的C代码的函数,所以它们的效率也不差. 可以将List::Utils模块中的功能大致分为3类:reduce类.key/value类以及其它类: reduce类:reduce类的函数是依次取(迭代)列表中的元素,并对这些元素做一些操作

python使用elasticsearch模块操作elasticsearch

1.创建索引 命令如下 from elasticsearch import Elasticsearch es = Elasticsearch([{"host":"10.87.6.3","port":9200},]) s = "test" + "python" try: ret = es.indices.create(index=s) except Exception as e: print(e) else:

perl HTML::LinkExtor模块(2)

1 use LWP::Simple; 2 use HTML::LinkExtor; 3 4 $html_code = get("https://tieba.baidu.com/p/4929234512"); 5 $img_link = HTML::LinkExtor->new(\&IMG); 6 $img_link->parse($html_code); 7 8 #爬图片链接 9 sub IMG{ 10 ($tag, %links) = @_; 11 if($tag