我想让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());
}
这是一个常见问题吗?我该如何解决?
答案 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