【发布时间】:2015-06-24 03:09:05
【问题描述】:
我已经尝试使用批量 API Perl 客户端在 Elasticsearch 中进行内容索引。我在批量摄取线上遇到错误。请在下面找到代码:
my $ifileid=0;
my $dir = '/home/bala/input_files/output';
opendir(DIR, $dir) or die $!;
my @arfiles = readdir (DIR);
closedir(DIR);
print scalar @arfiles." Total files\n";
foreach(@arfiles)
{
my $file = $_;
if ($ifileid>1)
{
$doc = {index => 'my_index', type => 'blog_post', id => $ifileid, body => {filename => $file, content => 'bala'}};
push @docs, { create => $doc };
if ($ibulkid==100)
{
# bulk index docs
my $res = $e->bulk(\@docs);
if ( $res->{errors} )
{
die "Bulk index had issues: " . $json->encode( $res->{errors} );
}
$ibulkid=0;
}
$ibulkid++;
}
$ifileid++;
}
我收到以下错误:
Error => Not a HASH reference at /usr/local/share/perl5/Search/Elasticsearch/Role/Client/Direct.pm line 15.
【问题讨论】:
-
从哪里获得
$ibulkid值? -
我以前用过。 ibulkid 用于将每 100 个文件索引到 ES 中。我的错误行是我的 $res = $e->bulk(\@docs);
-
线索在错误中 - 这是一个数组引用,而不是哈希引用。
标签: perl elasticsearch bulkinsert