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.
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
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