Perl Search::Elasticsearch模块使用经验总结
admin
2023-08-02 07:06:26
0

在搭建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};


相关内容

热门资讯

萍乡小程序制作 这是(SEO151220)整理的信息,希望能帮助到大家 萍乡小程序制作 随着移动互联网的普及,小程序...
华研精机获得实用新型专利授权:... 证券之星消息,根据天眼查APP数据显示华研精机(301138)新获得一项实用新型专利授权,专利名为“...
2026 年上海对讲机厂家怎么... 2026 年上海对讲机行业现状与核心痛点 近年来,随着安全生产法规的日益严格以及商业运营对通讯效率要...
2026年质量好的TPU手机壳... 在消费电子市场,手机品类迭代速度不断加快,消费者对手机壳的质感、贴合度、功能性要求也持续提升,TPU...
充电速度为何重要购车决策要关注... 在当今的汽车市场中,新能源汽车的普及程度越来越高,而充电速度成为了影响消费者购车决策的重要因素之一。...
台风巴威来袭,上海黄浦江沿岸风... 中央气象台最新预报显示,台风巴威将于7月12日凌晨在浙江三门至苍南一带沿海登陆。根据台风态势及走向,...
原创 全... 现在的宽带,真的是普及了,截止至2025年度,中国宽带用户已经高达6.91亿。 而6.91亿户宽带,...
原创 熟... 缺电缺疯了的印度,又盯上了4家中国电力企业! 印度财政部最近发文,把4家中国企业拉进了白名单,准许它...
国际会议时间变了,“过去迁就美... (文/观察者网 留白) 本周,联合国在瑞士日内瓦举行多场人工智能(AI)相关国际会议,来自190多个...
频繁跳闸是怎么回事 频繁跳闸可能由多种原因引起,以下是一些常见的原因:1. 过载:当电路中的电器设备功率超过电路的承载能...