我在我的Symfony项目中运行ONGR ElasticSearchBundle(大概只使用ES-PHP客户端)。我将使用公司名称和描述搜索现有索引,索引名称是公司。看起来是这样的:
"mappings": {
"_doc": {
"properties": {
"id": {"type": "long"},
"entityid": {"type": "long"},
"entityname": {"type": "keyword"},
"name": {"type": "text"},
"street": {"type": "text"},
"city": {"type": "text"},
"zip": {"type": "long"},
"ziptext": {"type": "keyword"},
"regionisocode": {"type": "keyword"},
"desc": {"type": "text"},
"branch": {"type": "text"},
"branchid": {"type": "long"},
"foundingyear": {"type": "date"}
}
}
}
文档类的外观如下:
/**
* Company
*
* @ES\Document()
*/
class Company
{
/**
* @var string
*
* @ES\Property(type="long", options={"index"="not_analyzed"})
*/
private $id;
/**
* @var string
*
* @ES\Property(type="long", options={"index"="not_analyzed"})
*/
private $entityid;
/**
* @var string
*
* @ES\Property(type="keyword", options={"index"="not_analyzed"})
*/
private $entityname;
...
当我将注释更改为:
/**
* Company
*
* @ES\Document(type="_doc")
*/
然后搜索运行良好,但是由于出现此错误,我无法执行任何作曲家命令:
[RuntimeException]An error occurred when executing the "'cache:clear --no-warmup'" command:[Symfony\Component\DependencyInjection\Exception\ServiceNotFoundExcepton] The service "company_search_service" has a dependency on a non-existent service "es.manager.default.company".
我在GitHub的捆绑软件中发现了一个问题,但是已经过去了四年多,并且已经关闭。
没有@ES\Document(type="_doc")
注释,我无法访问索引。也许有人有建议?
预先谢谢你
我正在使用Symfony 2.8和ONGR / Elastic Bundle 5.2.4
答案 0 :(得分:0)
我不知道它是否仍然有用,但是失败的服务是您的文档的存储库服务。之所以失败,是因为您可能在某个地方需要它。
通过将经理服务名称(es.manager.default
)附加类型名称(默认情况下为小写文档类名称,在您的情况下为company
)来动态创建存储库服务名称,因此-{{1} }。我假设添加其他类型的名称(在这种情况下为es.manager.default.company
)时,您的存储库名称将更改为_doc
。
您可以检查一下并更改您的服务要求,但老实说,我不鼓励使用es.manager.default._doc
作为类型名称。