mapado/elastica-query-bundle

此软件包已废弃且不再维护。未建议替代软件包。

ElasticSearch 查询构建器软件包

v3.0.1 2018-08-23 12:14 UTC

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

SensioLabsInsight