IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

Symfony et Elasticsearch


Sujet :

Symfony PHP

  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 236
    Par défaut Symfony et Elasticsearch
    Bonjour,

    Je dois intégrer un système de recherche avec l'outil Elasticsearch :

    http://www.noelshack.com/2016-19-1462970906-capture.png

    Dans cette page, mon formulaire me permet de rechercher un utilisateur, un point de vente etc.

    La requête qui permet de faire ceci (dans le repository) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
        public function findActiveUsersByOrganizationQuery($pos, $absent = null, $sourceId = false, $lead = false, $appointment = false, $keywords = null, $sort = array(), $enabled = false)
        {
            if (!is_array($pos)) {
                $pos = array($pos);
            }
     
            $sort = $this->checkSort($sort);
     
            $qb = $this->createQueryBuilder('u')
                    ->where('u.organization IN(:pos)')
                    ->leftJoin('u.organization', 'p')
                    ->setParameter('pos', $pos);
     
            /* SELECT u FROM User u LEFT JOIN u.organization p WHERE u.organization IN(:pos)  */
     
            if ($sourceId === false) {
     
            } elseif (is_null($sourceId)) {
                $qb->leftJoin('u.assignedSources', 's')
                        ->andWhere('s.id IS NULL');
            } else {
                $qb->leftJoin('u.assignedSources', 's')
                        ->andWhere('s.id = :source')
                        ->setParameter('source', $sourceId);
            }
     
            if ($appointment) {
                $qb->andWhere('u.availableForAppointment = :appointment')
                        ->setParameter('appointment', true);
            }
            if ($lead) {
                $qb->andWhere('u.availableForLead = :lead')
                        ->setParameter('lead', true);
            }
     
            if (!is_null($absent)) {
                $qb->andWhere('u.absent = :absent')
                        ->setParameter('absent', $absent);
            }
     
            if (!is_null($keywords)) {
                $qb = $this->addKeywordsSubquery($qb, $keywords);
            }
     
            if (!$enabled) {
                $qb->andWhere('u.enabled = :enabled')
                        ->setParameter('enabled', true);
            }
            $qb->orderBy($sort['sortColumn'], $sort['sortOrder']);
     
            return $qb;
        }
     
        public function findActiveUsersByOrganization($pos, $absent = null, $sourceId = false, $lead = false, $appointment = false, $keywords = null, $sort = array(), $enabled = false)
        {
            return $this->findActiveUsersByOrganizationQuery($pos, $absent, $sourceId, $lead, $appointment, $keywords, $sort, $enabled)->getQuery()->getResult();
        }
    Désolé de balancer ce code barbare tel-quel.

    Au final je devrais utiliser Elasticsearch au lieu de cette requête c'est bien ça ?

    Pour Elasticsearch, j'ai suivi ce tuto : http://afsy.fr/avent/2013/20-elastic...votre-Symfony2

    J'ai mis en place les différents Bundle et je les ai ajoutés au Kernel.

    Le problème vient lors de l’exécution de cette commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    php app/console fos:elastica:populate
    Dans ma console, j'ai ce message d'erreur :

    Resetting Carvivo

    Fatal error: Wrong parameters for Exception([string $exception [, long $code [, Exception $previous = NULL]]]) in C:\wamp\www\carvivocrm\vendor\ruflin\elastica\lib\Elastica\Exception\ResponseException.php on line 34
    J'ai configuré mon fichier config.yml comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    fos_elastica:
        clients:
            default: { host: localhost, port: 9200 }
        serializer:
            callback_class: FOS\ElasticaBundle\Serializer\Callback
            serializer: serializer
        indexes:
            Carvivo:
                types:
                    crm_user:
                        mappings:
                            last_name: ~
                        persistence:
                            driver: orm
                            model: Carvivo\CrmBundle\Entity\User
                            finder: ~
                            provider: ~
                            listener: ~
    Mais je ne trouve pas la solution à mon problème, je désespère .

    Merci pour vos réponses.

  2. #2
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 236
    Par défaut
    Même en suivant ce tuto à la lettre, j'ai la même erreurs :

    Resetting hortis

    Fatal error: Wrong parameters for Exception([string $exception [, long $code [, Exception $previous = NULL]]]) in C:\wamp\www\demo\vendor\ruflin\elastica\lib\Elastica\Exception\ResponseException.php on line 34

    Call Stack:
    0.0003 233336 1. {main}() C:\wamp\www\demo\app\console:0
    0.8065 2955992 2. Symfony\Component\Console\Application->run() C:\wamp\www\demo\app\console:29
    0.9290 3213408 3. Symfony\Bundle\FrameworkBundle\Console\Application->doRun() C:\wamp\www\demo\vendor\symfony\symfony\src\Symfony\Component\Console\Application.php:123
    4.4114 12176808 4. Symfony\Component\Console\Application->doRun() C:\wamp\www\demo\vendor\symfony\symfony\src\Symfony\Bundle\FrameworkBundle\Console\Application.php:92
    4.4119 12177792 5. Symfony\Component\Console\Application->doRunCommand() C:\wamp\www\demo\vendor\symfony\symfony\src\Symfony\Component\Console\Application.php:192
    4.5520 12427696 6. Symfony\Component\Console\Command\Command->run() C:\wamp\www\demo\vendor\symfony\symfony\src\Symfony\Component\Console\Application.php:860
    4.8926 13221272 7. FOS\ElasticaBundle\Command\PopulateCommand->execute() C:\wamp\www\demo\vendor\symfony\symfony\src\Symfony\Component\Console\Command\Command.php:259
    4.8926 13222496 8. FOS\ElasticaBundle\Command\PopulateCommand->populateIndex() C:\wamp\www\demo\vendor\friendsofsymfony\elastica-bundle\Command\PopulateCommand.php:124
    4.9162 13244104 9. FOS\ElasticaBundle\Index\Resetter->resetIndex() C:\wamp\www\demo\vendor\friendsofsymfony\elastica-bundle\Command\PopulateCommand.php:144
    4.9293 13261696 10. Elastica\Index->create() C:\wamp\www\demo\vendor\friendsofsymfony\elastica-bundle\Index\Resetter.php:100
    4.9293 13261952 11. Elastica\Index->delete() C:\wamp\www\demo\vendor\ruflin\elastica\lib\Elastica\Index.php:257
    4.9558 13296624 12. Elastica\Index->request() C:\wamp\www\demo\vendor\ruflin\elastica\lib\Elastica\Index.php:183
    4.9558 13297184 13. FOS\ElasticaBundle\Elastica\Client->request() C:\wamp\www\demo\vendor\ruflin\elastica\lib\Elastica\Index.php:494
    4.9558 13298240 14. Elastica\Client->request() C:\wamp\www\demo\vendor\friendsofsymfony\elastica-bundle\Elastica\Client.php:47
    4.9602 13305216 15. Elastica\Request->send() C:\wamp\www\demo\vendor\ruflin\elastica\lib\Elastica\Client.php:621
    4.9998 13422712 16. Elastica\Transport\Http->exec() C:\wamp\www\demo\vendor\ruflin\elastica\lib\Elastica\Request.php:171
    5.0975 13532128 17. Elastica\Exception\ResponseException->__construct() C:\wamp\www\demo\vendor\ruflin\elastica\lib\Elastica\Transport\Http.php:147
    5.0975 13532112 18. Exception->__construct() C:\wamp\www\demo\vendor\ruflin\elastica\lib\Elastica\Exception\ResponseException.php:34



    [Symfony\Component\Debug\Exception\FatalErrorException]
    Error: Wrong parameters for Exception([string $exception [, long $code [, Exception $previous = NULL]]])

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 236
    Par défaut
    J'ai trouvé la solution, c'était la version de Elasticsearch qui était trop récente, pour les personnes qui rencontreront ce problème, voici la version qu'il faut avoir :

    https://www.elastic.co/fr/downloads/...icsearch-1-7-3

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [1.x] symfony - Plusieurs projets
    Par mrjulien dans le forum Symfony
    Réponses: 3
    Dernier message: 12/09/2009, 21h46
  2. [1.x] Tutoriel pour symfony
    Par cjoly dans le forum Symfony
    Réponses: 7
    Dernier message: 19/07/2007, 19h03
  3. [1.x] Absolute beginner symfony
    Par Fugugirl dans le forum Symfony
    Réponses: 2
    Dernier message: 21/06/2007, 20h08
  4. [1.x] Problème installation symfony
    Par Nout dans le forum Symfony
    Réponses: 3
    Dernier message: 27/05/2007, 22h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo