From 40a68c876d428c737a3da2929d00c1e194ae7138 Mon Sep 17 00:00:00 2001 From: ornicar Date: Thu, 21 Apr 2011 19:34:57 -0700 Subject: [PATCH] Add documentation (WIP) --- README.md | 88 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) diff --git a/README.md b/README.md index c1b2c55..8ebe93a 100644 --- a/README.md +++ b/README.md @@ -56,3 +56,91 @@ With clone: // ... ); } + +### Basic configuration + +#### Declare a client + +Elasticsearch client is comparable to doctrine connection. +Most of the time, you will need only one. + + #app/config/config.yml + foq_elastica: + clients: + default: { host: localhost, port: 9200 } + +#### Declare an index + +Elasticsearch index is comparable to doctrine entity manager. +Most of the time, you will need only one. + + foq_elastica: + clients: + default: { host: localhost, port: 9200 } + indexes: + website: + client: default + +Here we created a "website" index, that uses our "default" client. + +#### Declare a type + +Elasticsearch type is comparable to doctrine entity repository. + + foq_elastica: + clients: + default: { host: localhost, port: 9200 } + indexes: + website: + client: default + types: + user: + mappings: + username: { boost: 5 } + firstName: { boost: 3 } + lastName: { boost: 3 } + aboutMe: + +### Populate the types + + php app/console foq:elastica:populate + +This command needs providers to insert new documents in the elasticsearch types. +There are 2 ways to create providers. +If your elasticsearch type matches a doctrine repository, go for the doctrine automatic provider. +Or, for complete flexibility, go for explicit provider. + +#### Doctrine automatic provider + +If we want to index the entities from a doctrine repository, +a little bit a configuration will let ElasticaBundle do it for us. + + foq_elastica: + clients: + default: { host: localhost, port: 9200 } + indexes: + website: + client: default + types: + user: + mappings: + # your mappings + doctrine: + driver: orm + model: Application\UserBundle\Entity\User + provider: + +Two drivers are actually supported: orm and mongodb. + +##### Use a custom doctrine query builder + +You can control which entitie will be indexed by specifying a custom query builder method. + + doctrine: + driver: orm + model: Application\UserBundle\Entity\User + provider: + query_builder_method: createIsActiveQueryBuilder + +Your repository must implement this method and return a doctrine query builder. +