FOSElasticaBundle索引减慢了Symfony的停顿

时间:2014-04-13 14:06:44

标签: symfony elastica foselasticabundle

使用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秒的最长执行时间”

So we are alone in the universe...

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

如果数据库为空,php app/console fos:elastica:populate - 命令将完成,并且我还使其工作一次或两次,其中一个数据库行被索引到ES,但数据库中的数据量甚至相当适中粉丝会疯狂地运行几分钟而不会超过Resetting website(运行populate-command时终端打印的第一行)。

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

  • 我之前已经在这个项目中成功地进行了ES集成。索引数据库,索引正在添加到数据库中的新内容,在ES中搜索 - 一切看起来都像是一个魅力。但ES-integration被保留在一个特定的git-branch上,之前还没有与主项目合并,现在它不再起作用了。

  • 在将ES-integrated分支与master-branch(主分支)合并之前,master-branch还使用了FOSRestBundle。

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

你们中有谁知道可能出现什么问题?任何帮助都会深深地赞赏!

如果有更多信息或更多部分代码可以帮助您找出错误,我当然乐意为您提供此信息。

1 个答案:

答案 0 :(得分:1)

当序列化的对象http://en.wikipedia.org/wiki/Circular_reference

时,问题是由循环引用引起的

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