0

I have installed FOSElasticaBundle, my config fos_elastica.yml is as follows:

 fos_elastica:
 clients:
     default: { host: localhost, port: 9200 }
 indexes:
     test:
         client: default
         index_name : %elastica_index_name%
         types:
             exhibition:
                 mappings:
                     name : { boost: 100 }
                     company: { boost: 9 }
                     directions: { boost: 8}
                     tags: { boost: 7 }
                     description : { boost: 6 }
                     status : ~
                 persistence:
                     driver: orm
                     model: Test\MainBundle\Entity\Exhibition
                     finder: ~
                     provider: ~
                     listener:
                         is_indexable_callback: "isPublic"

On persist is_indexable_callback works. But when I run fos:elastica:populate, the index is created even for hidden objects.

How can I index just active object? Maybe using analyzer or something like that?

Thanks in advance!

bitoiu
  • 6,893
  • 5
  • 38
  • 60
aidarka1
  • 183
  • 4

1 Answers1

0

You should specify:

provider:
    query_builder_method: createSearchIndexQueryBuilder

and then add method into related Entity\Repository:

public function createSearchIndexQueryBuilder()
{
    $qb = $this->createQueryBuilder()
    //->write_magic_here;

    return $qb;
}
Anton Babenko
  • 6,586
  • 2
  • 36
  • 44