mapado / elastica-query-bundle
此软件包已废弃且不再维护。未建议替代软件包。
ElasticSearch 查询构建器软件包
v3.0.1
2018-08-23 12:14 UTC
Requires
- php: ^7.2
- doctrine/common: ^2.0
- ruflin/elastica: ^2.2
- symfony/config: ^2.7|^3.0|^4.0
- symfony/dependency-injection: ^2.7|^3.0|^4.0
- symfony/http-kernel: ^2.7|^3.0|^4.0
Requires (Dev)
- mapado/php-cs-fixer-config: ^2.1
- phpstan/phpstan: ^0.10.1
- symfony/http-foundation: ^3.0
- symfony/stopwatch: ^3.0
README
受 FOSElasticaBundle 和 Doctrine 启发,创建了一个用于 ElasticSearch 的查询构建器。
安装
composer require "mapado/elastica-query-bundle:1.*"
配置
# app/config/config.yml mapado_elastica_query: clients: client_name: host: elasticsearch.example.com port: 9200 timeout: 3 indexes: twitter: # (optional, default to 'twitter') index_name: twitter_v1 client: client_name types: tweet: ~ document_managers: tweety: type: mapado.elastica.type.twitter.tweet # data_transformer: my.model.transformer #optional, must implements Mapado\ElasticaQueryBundle\DataTransformer\DataTransformerInterface # query_builder_classname: Acme\\Demo\\QueryBuilder\\TweetyQueryBuilder # @see "Overide Query Builder" section
使用方法
获取 DocumentManager
$client = $this->get('mapado.elastica.client.client_name'); // return a \Elastica\Client object $index = $this->get('mapado.elastica.index.twitter'); // return a \Elastica\Index object $type = $this->get('mapado.elastica.type.twitter.tweet'); // return a \Elastica\Type object
获取 elastica 对象
您可以通过以下方式获取基本的 Elastica 对象
$documentManager = $this->get('mapado.elastica.document_manager.tweety'); // return a \Mapado\ElasticaQueryBundle\DocumentManager $queryBuilder = $documentManager->createQueryBuilder(); $queryBuilder->addQuery(new \Elastica\Query\Term(['field' => 'value'])) ->addFilter(new \Elastica\Filter\Term(['field' => 'value'])); ->setMaxResults(20) ->setFirstResults(40); $tweets = $queryBuilder->getResult(); // return a \Mapado\Elastica\Model\SearchResult
重写 Query Builder
您可以在配置文件中这样做来重写 querybuilder
mapado_elastica_query: # ... document_managers: tweety: type: mapado.elastica.type.twitter.tweet query_builder_classname: 'Acme\Demo\QueryBuilder\TweetyQueryBuilder'
QueryBuilder 类必须继承自 Mapado\ElasticaQueryBundle\QueryBuilder