【发布时间】:2015-05-07 10:13:05
【问题描述】:
我正在 mojolicious 中尝试使用弹性搜索。
我在这两方面都相当新。
我想创建一个帮助器来存储 ES 连接,我希望传递与 ES 相关的帮助器配置(例如节点信息、trace_on 文件等)。
如果我编写以下非常简单的帮助程序,它就可以工作;
has elasticsearch => sub {
return Search::Elasticsearch->new( nodes => '192.168.56.21:9200', trace_to => ['File','/tmp/elasticsearch.log'] );
};
然后在启动中
$self->helper(es => sub { $self->app->elasticsearch() });
但是,如果我尝试扩展它以获取配置 - 如下所示 - 它失败。当应用程序调用 $self->es->index
时,我收到错误“找不到包上的索引”has elasticsearch => sub {
my $config = shift;
my $params->{nodes} = '192.168.56.21:' . $config->{port};
$params->{trace_to} = $config->{trace_to} if $config->{trace_to};
my $es = Search::Elasticsearch->new( $params );
return $es;
};
在启动中
$self->helper(es => sub { $self->app->elasticsearch($self->config->{es}) });
我认为我只是误解了助手或配置或两者兼而有之 - 有人可以启发我吗?
仅供参考,在一个单独的控制器文件中,我使用如下帮助器;
$self->es->index(
index => $self->_create_index_name($index),
type => 'crawl_data',
id => $esid,
body => {
content => encode_json $data,
}
);
如果我使用上面的简单(第一种)形式创建助手,那效果很好。 我希望这是足够的信息?如果还需要什么,请告诉我?
【问题讨论】:
标签: perl elasticsearch mojolicious