boomhq / laravel-scout-elastic

Laravel Scout 的 Elastic 驱动程序

5.0.12 2020-06-09 17:19 UTC

README

Software License Status build

此包是 Laravel Scout 的 Elasticsearch 驱动程序。

内容

安装

您可以通过 composer 安装此包

composer require boomhq/laravel-scout-elastic

您必须在 app.php 配置中添加 Scout 服务提供者和包服务提供者

// config/app.php
'providers' => [
    ...
    Laravel\Scout\ScoutServiceProvider::class,
    ...
    ScoutEngines\Elasticsearch\ElasticsearchProvider::class,
],

设置 Elasticsearch 配置

您必须有一个运行中的 Elasticsearch 服务器,并已创建您想要使用的索引

如果您需要帮助,请参阅 Elasticsearch 文档

发布 Laravel Scout 包配置后

// config/scout.php
// Set your driver to elasticsearch
    'driver' => env('SCOUT_DRIVER', 'elasticsearch'),

...
    'elasticsearch' => [
        'index' => env('ELASTICSEARCH_INDEX', 'laravel'),
        'hosts' => [
            env('ELASTICSEARCH_HOST', 'https://'),
        ],
//set If one index per model (use searchableAs Methode) (defaut false)
        'perModelIndex' => true,
    ],
...

用法

自定义索引

如果您想推送特定索引,可以在 Model 中使用 elasticsearchIndex() 声明(否则您需要删除索引并重新导入以创建它们)

    public function elasticsearchIndex()
    {
        return  [
                  "settings" => [
                        "analysis" => [
                           "analyzer" => [
                              "default" => [
                                 "tokenizer" => "my_tokenizer", 
                                 "filter" => [
                                    "lowercase" 
                                 ] 
                              ], 
                              "default_search" => [
                                       "tokenizer" => "my_tokenizer" 
                                    ] 
                           ], 
                           "tokenizer" => [
                                          "my_tokenizer" => [
                                             "type" => "edge_ngram", 
                                             "min_gram" => 3, 
                                             "max_gram" => 20, 
                                             "token_chars" => [
                                                "letter" 
                                             ], 
                                             "filter" => [
                                                   "lowercase", 
                                                   "asciifolding" 
                                                ] 
                                          ] 
                                       ] 
                        ], 
                        "max_ngram_diff" => "20" 
                     ] 
               ]; 
                
    }

自定义查询

在 Model 中,您可以通过以下方式指定自定义查询

 public function customScoutQuerySearching($terms): array
    {
        return [
            'query' => [
                'multi_match' => [
                    'query' => (string) ($terms),
                    'fields' => [
                        '*'
                    ],
                    'fuzziness' => 'AUTO',
                    'type' => 'most_fields'
                ]
            ],
        ];
    }

现在您可以使用 Laravel Scout,如官方文档中所述

致谢

许可证

MIT 许可证 (MIT)