escapehither/search-manager-bundle

此包的最新版本(0.3.0)没有提供许可证信息。

此symfony扩展包为symfony应用程序提供搜索和索引功能


README

此扩展包为官方Elasticsearch PHP提供集成

版本和依赖

与Elasticsearch 5和6兼容。它需要Symfony 3或4。当使用

下表显示了扩展包不同版本的兼容性。

步骤 1:下载扩展包

打开命令行,进入您的项目目录,并执行以下命令以下载此扩展包的最新稳定版本

$ composer require escapehither/search-manager-bundle dev-master

此命令要求您全局安装Composer,如Composer文档中的安装章节所述。

步骤 2:启用扩展包

然后,通过将其添加到项目中 app/AppKernel.php 文件中注册的扩展包列表来启用扩展包

<?php
// app/AppKernel.php

// ...
class AppKernel extends Kernel
{
    public function registerBundles()
    {
        $bundles = array(
            // ...
             new EscapeHither\SearchManagerBundle\EscapeHitherSearchManagerBundle(),
        );

        // ...
    }

    // ...
}

步骤 3:创建您的资源类

此扩展包使用 Symfony 序列化组件。 假设您有一个资源类,添加注释组。只有组中的属性会被标准化。

namespace Acme;

use Symfony\Component\Serializer\Annotation\Groups;
use EscapeHither\SearchManagerBundle\Entity\IndexableEntityInterface;

class Product implements IndexableEntityInterface
{
    /**
     * @Groups({"index"})
     */
    public $bar;

    /**
     * @var \DateTime $updatedAt
     */
    public $updatedAt;

    /**
     * @Groups({"index"})
     */
    public function getBar() // is* methods are also supported
    {
        return $this->bar;
    }
    /**
     * This method tells doctrine to always track this entity.
     */
    public function trackMe(){
        $this->updatedAt = new \DateTime('now');
    }

    // ...
}

步骤 4:导入和定义配置

  1. app/config/config.yml 中导入配置文件以进行默认过滤器集配置

    imports:
       - { resource: "@EscapeHitherSearchManagerBundle/Resources/config/services.yml" }
       - { resource: "@EscapeHitherSearchManagerBundle/Resources/config/config.yml" }
  2. 导入路由文件 app/config/routing.yml

    escape_hither_security_manager:
        resource: "@EscapeHitherSecurityManagerBundle/Resources/config/routing.yml"
        prefix:   /
  3. 配置参考:如果您想索引您的资源,请将其添加到您的配置文件中。

    escape_hither_search_manager:
    host: es
    indexes:
        product:
            entity: OpenMarketPlace\ProductManagerBundle\Entity\Product
            index_name: open-market-place
            type: product
            facets: 
                tags:
                    categories:
                        include: ['id','code','name']
                tags_relation:
                    offer.seller.id:
                        entity: OpenMarketPlace\UserManagerBundle\Entity\Seller
                        index_name: open-market-place
                        type: seller
                        field_name: commercialName
                        display_name: Seller
                        tag_type: terms  
                dates:
                    createdAt:
                        field_name: createdAt
                        display_name: date one
                        tag_type: terms
                    updatedAt:
                        field_name: updatedAt
                        display_name: date two
                        tag_type: terms
                ranges:
                    createddAt:
                        field_name: createddAt
                        display_name: range one
                        tag_type: date
                    updateddAt:
                        field_name: updateddAt
                        display_name: range two
                        tag_type: date
                    masterVariant.price:
                        field_name: masterVariant.price
                        display_name: price
                        tag_type: price

4:索引所有内容

每次添加新字段时,索引所有文档。此命令将根据提供的索引删除并重建所有内容。

$ bin/console cache:clear -e prod
$ bin/console cache:clear
$ bin/console escapehither:esm:index:all
  1. 添加搜索页面

如果您想创建新的搜索路由,在您的 routing.yml 文件中添加新的路由即可。

   genia_search:
       path:     /search
       defaults:
           _controller: "EscapeHitherSearchManagerBundle:Default:search"
           template: OpenMarketPlaceSearchManagerBundle:Default:index.html.twig
           index :
               name: open-market-place
               type: product
           pagination:
               size: 10
       methods:  GET