m6web / elasticsearch-bundle

基于 elasticsearch/elasticsearch-php 的 Symfony2 Bundle

安装次数: 578,859

依赖项: 2

建议者: 0

安全: 0

星标: 22

关注者: 51

分支: 19

开放问题: 3

类型:symfony-bundle

v4.1.0 2023-08-08 13:58 UTC

README

在 Symfony 项目中集成 Elasticsearch 官方 PHP 客户端

功能

此包根据应用程序配置中的设置创建一个或多个 Elasticsearch 客户端服务。

用法

安装

首先,您必须将包添加到您的 composer.json

    "require": {
        "m6web/elasticsearch-bundle": "dev-master"
    }

然后在您的 AppKernel 类中注册该包

<?php
    public function registerBundles()
    {
        $bundles = array(
            // ...
            new M6Web\Bundle\ElasticsearchBundle\M6WebElasticsearchBundle(),
        );
        // ...
    }

配置

在您的 config.yml 中,您可以配置一个或多个 Elasticsearch 客户端

m6web_elasticsearch:
    default_client: my_client
    clients:
        my_client:
            hosts:
                - 'localhost:9200'
                - 'http://other_host:9201'
        my_other_client:
            hosts:
                - 'other_server:9200'

从该配置,包将创建两个服务

  • m6web_elasticsearch.client.my_client,它将连接到两个 Elasticsearch 实例:端口 9200 的 localhost 和端口 9201 的 other_host
  • m6web_elasticsearch.client.my_other_client,它将连接到一个 Elasticsearch 实例:端口 9200 的 other_server

它还将创建 m6web_elasticsearch.client.default,它是 m6web_elasticsearch.client.my_client 的别名

附加配置

每个客户端都可以有额外的配置参数,这些参数将用于实例化 \Elasticsearch\Client。例如

m6web_elasticsearch:
    clients:
        my_client:
            hosts:
                - 'https://username:password@localhost:9200'
            headers:
                'Accept-Encoding': ['gzip']
            retries: 2
            logger: monolog.logger.custom
            connectionPoolClass: '\Elasticsearch\ConnectionPool\StaticConnectionPool'
            selectorClass: '\Elasticsearch\ConnectionPool\Selectors\RandomSelector'
            connectionParams:
                client:
                    timeout: 3
                    connect_timeout: 1

事件

该包分发包含有关 Elasticsearch 请求的各种信息的 \M6Web\Bundle\ElasticsearchBundle\EventDispatcher\ElasticsearchEvent 事件。

事件以 m6web.elasticsearch 的名称触发。

测试

您可以使用以下命令启动单元测试

./vendor/bin/atoum

许可证

ElasticsearchBundle 根据 MIT 许可证 许可。