aternovtsii/search-bundle

Symfony 扩展包,用于轻松集成 elastic/opensearch 搜索引擎和 doctrine

安装: 182

依赖项: 0

建议者: 0

安全: 0

星标: 0

关注者: 2

分支: 1

开放问题: 0

类型:symfony-bundle

v1.2.0 2024-09-04 08:52 UTC

This package is auto-updated.

Last update: 2024-09-04 08:53:36 UTC


README

composer require aternovtsii/search-bundle

要启用扩展包,将以下内容添加到您的 config/bundles.php 文件中

<?php

return [
    // ...
    ATSearchBundle\ATSearchBundle::class => ['all' => true],
];

要启用额外的 doctrine 过滤器,将以下内容添加到您的 config/doctrine.yaml 文件中

doctrine:
    orm:
        dql:
            numeric_functions:
                IFNULL: ATSearchBundle\Doctrine\Extensions\Query\IfNull
                JSON_CONTAINS: ATSearchBundle\Doctrine\Extensions\Query\JsonContains
                RAND: ATSearchBundle\Doctrine\Extensions\Query\Rand

在您的 config/packages/at_search.yaml 文件中配置扩展包

at_search:
    search:
        enabled: true
        client: OpenSearch\Client # OpenSearch\Client or Elasticsearch\Client
        mappings:
            App:
                namespace: App\Entity
                dir: '%kernel.project_dir%/src/Entity'

要创建 OpenSearch 客户端,将以下内容添加到您的 config/services.yaml 文件中

    OpenSearch\Client:
        factory: ['OpenSearch\ClientBuilder', 'fromConfig']
        arguments:
            $config:
                hosts: ['%env(OPENSEARCH_URL)%']

要创建 ElasticSearch 客户端,将以下内容添加到您的 config/services.yaml 文件中

    Elasticsearch\Client:
        factory: ['Elasticsearch\ClientBuilder', 'fromConfig']
        arguments:
            $config:
                hosts: ['%env(ELASTICSEARCH_URL)%']

使用示例

<?php

namespace App\Entity;

use ATSearchBundle\Annotation as ATSearch;
use Doctrine\ORM\Mapping as ORM;

#[ATSearch\Index]
#[ORM\Entity]
class User
{
    #[ATSearch\FieldId]
    #[ORM\Id]
    #[ORM\GeneratedValue]
    #[ORM\Column]
    public ?int $id = null;

    #[ATSearch\FieldString]
    #[ORM\Column(length: 128)]
    public ?string $firstName = null;

    #[ATSearch\FieldMultiString(subFields: 'email')]
    #[ORM\OneToMany(mappedBy: 'user', targetEntity: Email::class)]
    public Collection $emails;

要启用基于 Doctrine 事件的默认重新索引,将以下内容添加到您的 config/packages/at_search.yaml 文件中

at_search:
    search:
        enable_update_events: true # default false