0

使用 FOSElasticaBundle 在 ElasticSearch 中建立索引不起作用。

这是来自我的配置(app/config/config.yml):

fos_elastica:
    clients:
        default: { host: localhost, port: 9200 }
    serializer:
        callback_class: FOS\ElasticaBundle\Serializer\Callback
        serializer: serializer
    indexes:
        website:
            client: default
            types:
                idea:
                    mappings:
                        title: { boost: 6 }
                    persistence:
                        driver: orm
                        model: Ideside\IdeaBundle\Entity\Idea
                        provider: ~
                        finder: ~
                        listener: ~ 

当我注释掉所有这些,使事物不在 ES 中被索引时,一切都会正常工作。但是当它出现在 config.yml 文件中时,并且我使用表单发布实体时,计算机爱好者会发疯两分钟,并且将返回以下响应:

“FatalErrorException:错误:超过 120 秒的最大执行时间”

所以我们在宇宙中是孤独的......

当我更改 config.yml-settings 以便我发布的特定实体不在被索引到 ES 的实体中时,一切都会正常工作,但是在 ES 中仅索引一个数据库行就足以让服务器似乎停了下来。

如果数据库为空,php app/console fos:elastica:populate-command 将完成,并且我还让它工作一两次,其中一个数据库行被索引到 ES,但是即使数据库中的数据量非常少,风扇也会疯狂地运行几分钟而没有过去Resetting website(运行填充命令时终端打印的第一行)。

可能有助于理解问题所在的事情:

  • 我之前已经在这个项目中成功地进行了 ES 集成。索引数据库,索引添加到数据库中的新事物,在 ES 中搜索——一切看起来都像是一种魅力。但是 ES 集成被保存在一个特定的 git-branch 上,该分支之前没有与主项目合并,现在它不再工作了。

  • 在将 ES 集成分支与 master-branch 合并之前,master-branch 已经使用了 FOSRestBundle。

  • 团队中拉出主分支的其他人也遇到了同样的问题,所以似乎问题出在项目代码上,而不是我的 ElasticSearch 节点(虽然我不能确定)。

你们中有人知道可能出了什么问题吗?任何帮助将不胜感激!

如果更多信息或更多代码部分可以帮助确定问题所在,我当然很乐意为您提供。

4

1 回答 1

1

该问题是由序列化对象时的循环引用引起的:http ://en.wikipedia.org/wiki/Circular_reference 。

如果您有类似的问题,您可以通过修改使用注释序列化的属性来解决它:http: //jmsyst.com/libs/serializer/master/reference/annotations

于 2014-05-12T18:26:08.027 回答