Pregunta

Las cosas de indexación en Elasticsearch usando FoselasticABUNDLE no funcionan.

Aquí está desde mi configuración (APP / CONFIG / CONFIG.ML):

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: ~ 

Cuando comento todo esto, lo que lo hace para que las cosas no sean indexadas en es, todo funcionará bien. Pero cuando está presente en el archivo CONFIG.YML, y publico una entidad usando un formulario, el ventilador de la computadora irá como una locura durante dos minutos y se devolverá la siguiente respuesta:

"FATALERRORException: ERROR: Tiempo máximo de ejecución de 120 segundos excedido"

, así que estamos solos en el universo ...

Cuando cambio la configuración de Config.yml para que la entidad específica que estoy publicando no se encuentra entre los indexados a ES, todo funcionará bien, pero la indexación, solo una fila de base de datos en ES puede ser suficiente para Lleve al servidor a un detención que parece.

El comando php app/console fos:elastica:populate terminará si la base de datos está vacía, y también lo hice funcionar una o dos veces con una fila de base de datos que se indexó a ES, pero con una cantidad de datos aún más modestos en la base de datos se ejecutará el ventilador. Loco por minutos sin pasar por Resetting website (la primera línea, la terminal se imprime al ejecutar el comando POPULADO).

Cosas que pueden ayudar a comprender cuál es el problema:

  • He hecho que el ES-integración funcione con éxito en este proyecto antes. Indexando la base de datos, indexando las cosas nuevas que se agregan a la base de datos, buscando en ES, todo funcionó como un encanto que parecía. Pero la integración ES, se mantuvo en una rama de Git específica que no se ha fusionado con el proyecto principal antes de ahora, y ahora ya no funciona.

  • Antes de fusionar la rama integrada de ES-INTEGRADA con la sucursal maestra, la sucursal maestra, la sucursal maestra tiene, entre otras cosas, el uso de la FOSRESTBUNDLE.

  • Otras personas en el equipo que han tirado de la sucursal maestra han tenido el mismo problema, por lo que parece que el problema es con el código del proyecto, y no con mi elasticsearch-nodo (aunque no puedo ser seguro).

¿Alguno de ustedes tiene alguna idea de lo que podría estar equivocado? Cualquier ayuda sería profundamente apreciada!

Si hay más información o más secciones de código pueden ser de ayuda para identificar lo que está mal,, por supuesto, le proporcionaré esto.

¿Fue útil?

Solución

El problema fue causado por referencias circulares cuando los objetos sean serializados: http://en.wikipedia.org/wiki / circular_reference .

Si tiene un problema similar, puede resolverlo modificando qué propiedades sean serializadas mediante el uso de anotaciones: http://jmsyst.com/libs/serializer/master/reference/annotations .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top