03/06/2016 - ELASTICSEARCH, SYMFONY
Aşağıdaki notlar symfony uygulamasında FOSElasticaBundle kullananlar için geçerlidir. Bu blog içinde aşağıdaki her not ile ilgili bir yazı bulabilirsiniz.
provider.query_builder_method
seçeneğini kullanarak veri seçmeyi belli başlı kurallara dayanarak yapabilirsiniz. Bunun için bir repository methodu yazmanız gerekir.provider.query_builder_method
özelliğini kullanarak sadece belli başlı kayıtları seçin. Index ne kadar küçük olursa, performansta o kadar artar.@fos_elastica.finder.post_index[indexName].post[type]
(use FOS\ElasticaBundle\Finder\TransformedFinder;
) dependency injection servisi yerine, @fos_elastica.index.post_index[indexName].post[type]
(use Elastica\Type;
) dependency injection servisini kullanın. Eğer 'index' seçeneğini kullanırsanız, hem daha performanslı sonuç alırsınız, hem de daha fazla özellikten yararlanabilirsiniz. Eğer 'finder' seçeneğini kullanırsanız, Pagerfanta kütüphanesini de kullanmak zorunda kalabilirsiniz ki, bu da performansı düşürür.listener.[insert|update|delete]
seçerneklerini 'false' olarak ayarlayabilirsiniz.persistence.model_to_elastica_transformer
özelliğini kullanabilirsiniz.provider.service
seçeneği altında kullanabilirsiniz.Daha fazla bilgi ve seçenek için Configuration.php dosyasını okuyabilirsiniz.
persistence:
driver: orm
model: Your/AppBundle/Entity/User
finder: ~
provider: ~
listener: ~
persistence:
driver: Kullandığınız sürücü.
model: İndexin yaratılacağı kaynak entity class.
finder: ES finderi sorgulamak için kullanılır. Değiştirmeye gerek yok.
provider: Özel bir repository QueryBuilder (query_builder_method) yazıp, veri seçmeyi belli başlı kurallara dayanarak yapabilmemizi sağlar. Veya, (service) özel bir servis class yazarak, verileri veritabanı haricindeki bir kaynakdan alarak indexi doldurmamızı sağlar.
listener: Veritabanında CRUD işlemleri yapıldığında, indexe ne olacağına karar vermemizi sağlar.
model_to_elastica_transformer: Özel bir servis class yaratıp, index doldurulurken bilgileri manipüle etmemizi sağlar.