填充FOSElasticaBundle / Symfony2时ResponseExeption出错

时间:2015-10-20 06:24:58

标签: symfony exception elastica foselasticabundle

我想让FOSElasticaBundle工作。 ElasticSearch Instance正在localhost:9200上运行并响应。

我按照文档https://github.com/FriendsOfSymfony/FOSElasticaBundle/blob/master/Resources/doc/setup.md

中的每个步骤进行操作

但是在最后一步,我在我的控制台中收到此错误:

c:\xampp\htdocs\my\folder>php app/console fos:elastica:populate
Resetting app

Fatal error: Wrong parameters for Exception([string $exception [, long $code [,
Exception $previous = NULL]]]) in C:\xampp\htdocs\my\folder\vendor\rufli
n\elastica\lib\Elastica\Exception\ResponseException.php on line 34

[Symfony\Component\Debug\Exception\FatalErrorException]

Error: Wrong parameters for Exception([string $exception [, long $code [, Exception $previous = NULL]]])


fos:elastica:populate [--index[="..."]] [--type[="..."]] [--no-reset] [--offset="..."] [--sleep="..."] [--batch-size="..."] [--ignore-errors] [--no-overwrite-format]

似乎有" __ construct" -Function必须有3个参数,但只有2个参数。我只是尝试添加" NULL" -parameter以使其正常工作,但是另一个函数会抛出错误。

public function __construct(Request $request, Response $response)
{
    $this->_request = $request;
    $this->_response = $response;
    parent::__construct($response->getError());
}

这是一个常见问题吗?我该如何解决?

2 个答案:

答案 0 :(得分:7)

这是因为ruflin / Elastica包与elasticsearch 2.0不兼容。

https://github.com/ruflin/Elastica/issues/946

现在的替代方案(直到ruflin / Elastica升级为2.0),是使用最新的1.x版本。

您可以在此处下载:https://www.elastic.co/downloads/past-releases/elasticsearch-1-7-3

ES 1.7.3 + FosElasticaBundle(使用ruflin / Elastica)适用于Elasticsearch 1.7.3版本。

答案 1 :(得分:4)

这个问题的原因是,使用elasticsearch 2.0时,响应错误的结构发生了变化(更多细节在这里:https://github.com/ruflin/Elastica/issues/946)。而不是之前的字符串现在是嵌套数组。 Elastica目前尚未与elasticsearch 2.0完全兼容。一旦新的Elastica版本与Elasticsearch 2.0兼容,它可能意味着foselastica bundle也必须更新,因为这些更改将破坏向后兼容性。还要注意,这不是唯一的向后兼容性改变。

要了解升级进度,请遵循以下问题:https://github.com/ruflin/Elastica/issues/946