Skip to content

Latest commit

 

History

History
77 lines (59 loc) · 1.76 KB

serializer.md

File metadata and controls

77 lines (59 loc) · 1.76 KB

Using a Serializer in FOSElasticaBundle

FOSElasticaBundle supports using a Serializer component to serialize your objects to JSON which will be sent directly to the Elasticsearch server. Combined with automatic mapping it means types do not have to be mapped.

A) Install and declare the serializer

Both the Symfony Serializer and JMSSerializerBundle are supported.

Enable the Symfony serializer in the configuration:

#app/config/config.yml
fos_elastica:
    serializer: ~

Alternatively the JMS serializer can be used as follows:

#app/config/config.yml
fos_elastica:
    serializer:
        serializer: jms_serializer

B) Set up each defined type to support serialization

A type does not need to have mappings defined when using a serializer. An example configuration for a type in this case:

fos_elastica:
    indexes:
        app:
            types:
                user:
                    serializer:
                        groups: [elastica]

And inside the User class:

use Symfony\Component\Serializer\Annotation\Groups;

class User {

    /**
     * @Groups({"elastica"})
     *
     * @var string
     */
    private $username;
    
}

In addition the JMS Serializer allows you to specify options for version and whether to serialize null

fos_elastica:

    indexes:
        app:
            types:
                user:
                    serializer:
                        groups: [elastica]
                        version: '1.1'
                        serialize_null: true