Search among multiple models with ElasticSearch and Laravel Scout

Overview

Scout ElasticSearch Import progress report

Build Status Code quality Coverage Total Downloads Latest Version License

For PHP8 support use php8 branch

For Laravel Framework < 6.0.0 use 3.x branch

The package provides the perfect starting point to integrate ElasticSearch into your Laravel application. It is carefully crafted to simplify the usage of ElasticSearch within the Laravel Framework.

It’s built on top of the latest release of Laravel Scout, the official Laravel search package. Using this package, you are free to take advantage of all of Laravel Scout’s great features, and at the same time leverage the complete set of ElasticSearch’s search experience.

If you need any help, stack overflow is the preferred and recommended way to ask support questions.

💕 Features

Don't forget to the package if you like it. 🙏

⚠️ Requirements

  • PHP version >= 7.3
  • Laravel Framework version >= 6.0.0
Elasticsearch version ElasticsearchDSL version
>= 7.0 >= 3.0.0
>= 6.0, < 7.0 < 3.0.0

🚀 Installation

Use composer to install the package:

composer require matchish/laravel-scout-elasticsearch

Set env variables

SCOUT_DRIVER=Matchish\ScoutElasticSearch\Engines\ElasticSearchEngine

The package uses \ElasticSearch\Client from official package, but does not try to configure it, so feel free do it in your app service provider. But if you don't want to do it right now, you can use Matchish\ElasticSearchServiceProvider from the package.
Register the provider, adding to config/app.php

'providers' => [
    // Other Service Providers

    \Matchish\ScoutElasticSearch\ElasticSearchServiceProvider::class
],

Set ELASTICSEARCH_HOST env variable

ELASTICSEARCH_HOST=host:port

And publish config example for elasticsearch
php artisan vendor:publish --tag config

💡 Usage

Note: This package adds functionalities to Laravel Scout, and for this reason, we encourage you to read the Scout documentation first. Documentation for Scout can be found on the Laravel website.

Index settings and mappings

It is very important to define the mapping when we create an index — an inappropriate preliminary definition and mapping may result in the wrong search results.

To define mappings or settings for index, set config with right value.

For example if method searchableAs returns products string

Config key for mappings should be
elasticsearch.indices.mappings.products
Or you you can specify default mappings with config key elasticsearch.indices.mappings.default

Same way you can define settings

For index products it will be
elasticsearch.indices.settings.products

And for default settings
elasticsearch.indices.settings.default

Eager load

To speed up import you can eager load relations on import using global scopes.

You should configure ImportSourceFactory in your service provider(register method)

use Matchish\ScoutElasticSearch\Searchable\ImportSourceFactory;
...
public function register(): void
{
$this->app->bind(ImportSourceFactory::class, MyImportSourceFactory::class);

Here is an example of MyImportSourceFactory

namespace Matchish\ScoutElasticSearch\Searchable;

final class MyImportSourceFactory implements ImportSourceFactory
{
    public static function from(string $className): ImportSource
    {
        //Add all required scopes
        return new DefaultImportSource($className, [new WithCommentsScope()]);
    }
}

class WithCommentsScope implements Scope {

    /**
     * Apply the scope to a given Eloquent query builder.
     *
     * @param \Illuminate\Database\Eloquent\Builder $builder
     * @param \Illuminate\Database\Eloquent\Model $model
     * @return void
     */
    public function apply(Builder $builder, Model $model)
    {
        $builder->with('comments');
    }
}

Zero downtime reimport

While working in production, to keep your existing search experience available while reimporting your data, you also can use scout:import Artisan command:

php artisan scout:import

The command create new temporary index, import all models to it, and then switch to the index and remove old index.

Search

To be fully compatible with original scout package, this package does not add new methods.
So how we can build complex queries? There is two ways.
By default, when you pass a query to the search method, the engine builds a query_string query, so you can build queries like this

Product::search('title:this OR description:this) AND (title:that OR description:that')`

If it's not enough in your case you can pass a callback to the query builder

$results = Product::search('zonga', function($client, $body) {

    $minPriceAggregation = new MinAggregation('min_price');
    $minPriceAggregation->setField('price');
    
    $maxPriceAggregation = new MaxAggregation('max_price');
    $maxPriceAggregation->setField('price');
    
    $brandTermAggregation = new TermsAggregation('brand');
    $brandTermAggregation->setField('brand');

    $body->addAggregation($minPriceAggregation);
    $body->addAggregation($brandTermAggregation);
    
    return $client->search(['index' => 'products', 'body' => $body->toArray()]);
})->raw();

$client is \ElasticSearch\Client object from elasticsearch/elasticsearch package
And $body is ONGR\ElasticsearchDSL\Search from ongr/elasticsearch-dsl package

Search amongst multiple models

You can do it with Mixed class, just pass indices names separated by commas to the within method.

Mixed::search('title:Barcelona or to:Barcelona')
    within(implode(',', [
        (new Ticket())->searchableAs(),
        (new Book())->searchableAs(),
    ]))
->get();

In this example you will get collection of Ticket and Book models where ticket's arrival city or book title is Barcelona

Working with results

Often your response isn't collection of models but aggregations or models with higlights an so on. In this case you need to implement your own implementation of HitsIteratorAggregate and bind it in your service provider

Here is a case

🆓 License

Scout ElasticSearch is an open-sourced software licensed under the MIT license.

Comments
  • eager load is not working

    eager load is not working

    Software Version PHP 7.2.5 Elasticsearch 7.9.3 Laravel 7 Laravel Scout 8.3

    I followed the steps from the eager load section but the method from in the MyImportSourceFactory is not triggered

    Should we call that method manually ? Or it is supposed to be triggered automatically ?

    Also I saw that now there is a method named makeAllSearchableUsing in the Searchable class which can be used to eager load relationships. Is that supported from the package ?

    bug 
    opened by Orest-Divintari 26
  • WhereIn Methods and others

    WhereIn Methods and others

    To be fully compatible with original scout package, this package does not add new methods.

    I really need a whereIn('id', $array) method for a project I'm working on. Is there a way I can extend the Builder or run a more complex query to accomplish?

    help wanted 
    opened by mackhankins 20
  • [Feature] how to use queue import many-to-many relationshop?

    [Feature] how to use queue import many-to-many relationshop?

    Is your feature request related to a problem? Please describe. I have a database table with many-to-many relationship Materials (keywords) => TagsKey => Tag When I tried to import data into elasticsearch, it was not imported at all. I do n’t know if I am already processing the data or where I stopped.

    If there is no relationship between these keywords, I have a total of 60k arrays, and all of them are imported in less than 60s. Many-to-many relationships are not completed in 30 minutes, and there is no data in kibana.

    Describe the solution you'd like can see what operations are being performed during the import, for example: the data with the id 1001 is being imported

    Describe alternatives you've considered none

    Additional context image

    class AppServiceProvider extends ServiceProvider
    {
        /**
         * Register any application services.
         *
         * @return void
         */
        public function register()
        {
            // ElasticSearch 注入
            $this->app->bind(ImportSourceFactory::class, MaterialImport::class);
        }
    
        /**
         * Bootstrap any application services.
         *
         * @return void
         */
        public function boot()
        {
        }
    }
    
    class MaterialModel extends Model
    {
    
        use Searchable;
        protected $table = "materials";
        protected $appends = ['keywords'];
    
        public function getKeywordsAttribute()
        {
            return implode(' ', array_unique(array_filter($this->tags()->pluck('title')->toArray())));
        }
    
        public function tags()
        {
            return $this->belongsToMany(TagModel::class, MaterialTagModel::class, 'mid', 'tid');
        }
    
        public function searchableAs()
        {
            return 'materials';
        }
    }
    
    final class MaterialImport implements ImportSourceFactory
    {
        public static function from(string $className): ImportSource
        {
            return new DefaultImportSource($className, [new MaterialKeywordsScope()]);
        }
    }
    ```php
    class MaterialKeywordsScope implements Scope
    {
        public function apply(Builder $builder, Model $model)
        {
            $builder->with('tags');
        }
    }
    
    enhancement 
    opened by StringKe 19
  • Implement lazyMap

    Implement lazyMap

    Is your feature request related to a problem? Please describe. LazyMap required for Laravel Nova. Here if a possible implementation that will fail with MixedSearch https://github.com/matchish/laravel-scout-elasticsearch/pull/172

    Describe the solution you'd like Implement lazyMap that can work with any Builder

    Describe alternatives you've considered We can use the solution https://github.com/matchish/laravel-scout-elasticsearch/pull/172 but meaningfull error have to be thrown when cursor used with MixedSearch that prevent debugging

    enhancement help wanted 
    opened by matchish 13
  • [BUG] No Models Indexed

    [BUG] No Models Indexed

    Describe the bug No models are indexed when running php artisan scout:import. Console does not display anything

    To Reproduce

    Include a custom Searchable Trait which uses the Scout Searchable Trait run php artisan scout:import

    Expected behavior Should index models

    Additional context Only happens on v4.0.4

    Version v4.0.4 Laravel 8 scout 8.5

    This is the trait included in all of my models

    image

    bug 
    opened by adrianpaiva1 13
  • [BUG] high memory usage

    [BUG] high memory usage

    Describe the bug there has memory error

    To Reproduce Steps to reproduce the behavior: import 12m record from mysql

    Expected behavior import all data to es

    Additional context error message: Importing [App\Models\User\VideoPlayHistory] Indexing... 4674/24202 [⚬⚬⚬⚬⚬➤⚬⚬⚬⚬⚬⚬⚬⚬⚬⚬⚬⚬⚬⚬⚬⚬⚬⚬⚬⚬⚬⚬] 19% PHP Fatal error: Allowed memory size of 8589934592 bytes exhausted (tried to allocate 118784 bytes) in /web/vendor/elasticsearch/elasticsearch/src/Elasticsearch/Connections/Connection.php on line 317 PHP Fatal error: Allowed memory size of 8589934592 bytes exhausted (tried to allocate 65536 bytes) in /web/vendor/jakub-onderka/php-console-highlighter/src/Highlighter.php on line 8

    Version Versions of Laravel, Scout, and the package. laravel: 6.20.13 scout: 8.6.0 laravel-scout-elasticsearch: 4.0.5

    bug 
    opened by uyson 12
  • [BUG] Compatible with Laravel Telescope in Composer require-dev

    [BUG] Compatible with Laravel Telescope in Composer require-dev

    Describe the bug php artisan scout:import crashes when Laravel Telescope is configured as "dev" requirement, to only load in "local" environment.

    To Reproduce Steps to reproduce the behavior:

    1. Require Laravel Telescope as dev req.: composer require laravel/telescope --dev
    2. Install Telescope as described here https://laravel.com/docs/telescope#installation, for dev!
      1. php artisan telescope:install and php artisan migrate.
      2. After running telescope:install, you should remove the TelescopeServiceProvider service provider registration from your app configuration file. Instead, manually register the service provider in the register method of your AppServiceProvider.
    3. Try php artisan scout:import (without extra argument). This throws exception: "Class 'Laravel\Telescope\TelescopeApplicationServiceProvider' not found"

    Expected behavior Running scout:import should only try to load classes with require_once $file; that are Eloquent model and Searchable only. If possible.

    Additional context

    I think the problem is located here: https://github.com/matchish/laravel-scout-elasticsearch/blob/06c90914668942b23ffaff7d58af5b9db1901fb1/src/Searchable/SearchableListFactory.php#L69

    There ALL php files in the app directory are loaded, even when it is not used at runtime.

    In my setup the class \App\Providers\TelescopeServiceProvider should only be loaded in dev, but is now loaded anyway by \Matchish\ScoutElasticSearch\Searchable\SearchableListFactory::getProjectClasses.

    The intention of my setup is made clear in \App\Providers\AppServiceProvider::register:

            if ($this->app->isLocal()) {
                $this->app->register(TelescopeServiceProvider::class);
            }
    

    Version Versions of Laravel, Scout, and the package. Laravel 5.8 Scout: 7.2.1 Package: 3.0.3

    bug help wanted 
    opened by ametad 12
  • [BUG] scout:import starting two processes with the same id, one always failing

    [BUG] scout:import starting two processes with the same id, one always failing

    Version Laravel: 8.62.0 Scout: 9.2.10 Package: 5.0.1

    Problem I get entries in the table failed_jobs like Illuminate\Queue\MaxAttemptsExceededException: Matchish\ScoutElasticSearch\Jobs\QueueableJob has been attempted too many times or run too long. I don't think it's actually a timeout, because payload contains timeout: null and failOnTimeout: false.

    I spent hours searching for the cause and even logged the responses of Elasticsearch. Looking into worker.log, which is maintained by pm2, I see:

    [2022-01-28 09:47:20][izYkReOaDX7UOzCmr4t21lHLOjvUIPj3] Processing: Matchish\ScoutElasticSearch\Jobs\QueueableJob
    [2022-01-28 09:48:50][izYkReOaDX7UOzCmr4t21lHLOjvUIPj3] Processing: Matchish\ScoutElasticSearch\Jobs\QueueableJob
    [2022-01-28 10:05:17][izYkReOaDX7UOzCmr4t21lHLOjvUIPj3] Processed:  Matchish\ScoutElasticSearch\Jobs\QueueableJob
    

    It strikes me as odd that a process is started twice with the same id. The process started at 09:48:50 fails immediately (written to failed_jobs). I can see in pm2 monit that one queue worker is doing work until the log entry at 10:05:17 confirms that the job was processed. This also shows that there is no timeout problem and the job actually works.

    I guess it's tough, even for you, to diagnose this behaviour. Could you at least point out, how I could debug this problem better and narrow down the cause?

    bug 
    opened by LMCom 11
  • ElasticSearch 8.0 support

    ElasticSearch 8.0 support

    Elasticsearch 8.0 released https://www.elastic.co/guide/en/elasticsearch/reference/master/release-notes-8.0.0-alpha1.html Vote this post if you need support of it in this package

    enhancement 
    opened by matchish 11
  • [BUG] PHP Warning

    [BUG] PHP Warning

    there has some warning on execute command scout:import

    PHP Warning:  Unterminated comment starting line 20 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 19 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 15 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 29 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 36 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 58 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 19 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 18 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 35 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 21 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 21 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 23 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 24 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 20 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 23 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 24 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 32 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 51 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 24 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 30 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 30 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 25 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 37 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 23 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 26 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 86 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 104 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 16 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 31 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 19 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 14 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 29 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 31 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 22 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 31 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 30 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 25 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 167 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 384 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 413 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 22 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 27 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 19 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 23 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 10 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 11 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 11 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 11 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 14 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 11 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 22 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 21 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 22 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 30 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 24 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 17 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 25 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 38 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 38 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 18 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 20 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 18 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 22 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 22 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 17 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 19 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 2 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 3 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 2 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 2 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 2 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 2 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 2 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 2 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 2 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 36 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 2 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 3 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 33 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 2 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 3 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 37 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 2 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 3 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 3 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 36 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 3 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 3 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 3 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 2 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 3 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 32 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 3 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 32 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 3 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 29 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 3 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 3 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 2 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 3 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 3 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 3 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 32 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 3 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 2 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 2 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 3 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 3 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 3 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 33 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 3 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 3 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 33 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 3 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 3 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 37 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 2 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 25 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 26 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 22 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 25 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 21 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 5 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 5 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 25 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 25 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 25 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 21 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 25 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 25 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 24 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 5 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 22 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 25 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 25 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 5 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 5 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 25 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 25 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 25 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 5 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 45 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 25 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 5 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 25 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 24 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 5 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 5 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 45 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 22 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 5 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 23 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 5 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 23 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 22 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 5 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 22 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 22 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 21 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 5 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 46 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 5 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 24 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 25 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 5 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 5 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 22 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 25 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 14 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 29 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 33 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 30 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 16 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 20 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 22 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 15 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 23 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 19 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 19 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 43 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 24 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 22 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 24 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 32 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 24 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 42 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 19 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 22 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 20 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 21 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 17 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 16 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 25 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 35 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 25 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 14 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 35 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 24 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 25 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 25 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 25 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 18 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 20 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 19 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 20 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 19 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 21 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    PHP Warning:  Unterminated comment starting line 25 in /Users/alim/projects/film/web/vendor/matchish/laravel-scout-elasticsearch/src/Searchable/SearchableListFactory.php on line 100
    Importing [App\User]
    Clean up
       1/2585 [➤⚬⚬⚬⚬⚬⚬⚬⚬⚬⚬⚬⚬⚬⚬⚬⚬⚬⚬⚬⚬⚬⚬⚬⚬⚬⚬⚬]   0%
    

    To Reproduce

    Version Versions of Laravel 6 php PHP 7.4.8 "matchish/laravel-scout-elasticsearch": "^4.0", Elasticsearch 7.10

    bug 
    opened by uyson 11
  • Indices aren't configured correctly when you dont use the `scout:import` command

    Indices aren't configured correctly when you dont use the `scout:import` command

    If you do not use the scout:import command, indexes are no longer appended with the time(). Which results in the following error:

    {
       "error":{
          "root_cause":[
             {
                "type":"index_not_found_exception",
                "reason":"no such index",
                "resource.type":"index_or_alias",
                "resource.id":"index_name",
                "index_uuid":"_na_",
                "index":"index_name"
             }
          ],
          "type":"index_not_found_exception",
          "reason":"no such index",
          "resource.type":"index_or_alias",
          "resource.id":"index_name",
          "index_uuid":"_na_",
          "index":"index_name"
       },
       "status":404
    }
    
    opened by jdbolts 11
  • [Feature] Question? MixedSearch - How to eager load realtionships and use pagination() at same time?

    [Feature] Question? MixedSearch - How to eager load realtionships and use pagination() at same time?

          $data =   MixedSearch::search($request->q ?? '')->within(implode(',', $searchTypes))->query(function ($query) {
                $query->with('media');
            })->get();
    

    I would like to eager load some relationship and use pagination. If I use paginate() with query(), it throws SQLSTATE[42000]: Syntax error or access violation.

    SELECT count(*) AS aggregate FROM `mixed_search`.`php:20$20cs` WHERE `mixed_search`.`php:20$20cs`.`id` IN (7, 9, 4, 5)
    
    enhancement 
    opened by PitchRE 0
  • [BUG]Elastic\Transport\Exception\NoAsyncClientException: I did not find any HTTP library with HttpAsyncClient interface.

    [BUG]Elastic\Transport\Exception\NoAsyncClientException: I did not find any HTTP library with HttpAsyncClient interface.

    Describe the bug Unable to connect to ElasticSearch after deployment to Azure :

    Elastic\Transport\Exception\NoAsyncClientException: I did not find any HTTP library with HttpAsyncClient interface. Make sure to install a package providing "php-http/async-client-implementation". You can also set a specific async library using Elastic\Transport\Transport::setAsyncClient() in file /var/www/petalens/vendor/elastic/transport/src/Transport.php

    - The app is working locally and successfully connects to Elasticsearch and gets indexed data , but one it's deployed on Azure it produces the error above .

    Version Versions of Laravel, Scout, and the package. "matchish/laravel-scout-elasticsearch": "v6.0.0", "laravel/scout": "^9.4", "php": "^8.0.2",

    bug 
    opened by HoudaAbdellaoui1 0
  • [Feature] Add Index alias after documents were added successfully with scout:import

    [Feature] Add Index alias after documents were added successfully with scout:import

    Hey Devs, i noticed following during an error of creating an index. Elasticsearch/OpenSearch is the searchable view layer of the application. The index was created successfully. The app started to add documents to the new index. It crashed because of some errors. (the errors are fixed now. It was a result of strict mapping policy and doesn't matter here) The app showed some duplicated entries. After a short look i noticed two indices with the same alias. I reproduced the behaviour locally and found the reason:

    Screenshot 2022-12-08 at 10 43 58

    CreateWriteIndex Line 80 adds an index to the aliases array which will be later added to to config which is passed in the index creation request to Elasticsearch. Is there a reason to add the index alias in this early stage and show duplicated entries until the scout import process (deleting the old index) is finished?

    I would want to change the behaviour to add the alias after the documents were added. Adding Documents can be a time consuming process e.g. with geo objects.

    enhancement 
    opened by SineMah 5
  • [Feature] Implement createIndex method for engine

    [Feature] Implement createIndex method for engine

    Laravel scout have scout:index command that not implemented here

    Describe the solution you'd like Have to create index from index name and ignore index key. If there are settings and mappings for the index name they have to be applied. Otherwise default have to be applied

    Context https://github.com/matchish/laravel-scout-elasticsearch/issues/46#issuecomment-1330485985

    Take a look how to instantiate an index https://github.com/matchish/laravel-scout-elasticsearch/blob/e545cde6a5b0ca663562f388a57c79002d4a92d8/src/ElasticSearch/Index.php#L87 Here how to store the index https://github.com/matchish/laravel-scout-elasticsearch/blob/e545cde6a5b0ca663562f388a57c79002d4a92d8/src/Jobs/Stages/CreateWriteIndex.php#L36 Also consider to check by alias if the index exists already before create new one. If the index exists already the method have to fail.

    enhancement help wanted 
    opened by matchish 0
  • [BUG] Saving is trying to update fields from relationship

    [BUG] Saving is trying to update fields from relationship

    I have Table "Offers" which has two more relations (Client and Broker) which are not indexed into ES. When I save the one thats indexed I get error "Bulk update error".

    Checked the laravel log and noticed its trying to update the fields from one of the relationships.

    CleanShot 2022-10-28 at 15 17 09

    Log file:

    laravel-2022-10-28.log

    Versions Laravel: 9.6 Scout: 9.4 Scout Elasticsearch: 6.0 Elasticsearch: 8.4.3

    bug 
    opened by AiAe 4
Releases(V6.0.2)
Owner
Sergey Shlyakhov
Sergey Shlyakhov
Plastic is an Elasticsearch ODM and mapper for Laravel. It renders the developer experience more enjoyable while using Elasticsearch, by providing a fluent syntax for mapping, querying, and storing eloquent models.

Plastic is an Elasticsearch ODM and mapper for Laravel. It renders the developer experience more enjoyable while using Elasticsearch, by providing a f

Sleiman Sleiman 511 Dec 31, 2022
Laravel package to search through multiple Eloquent models. Supports sorting, pagination, scoped queries, eager load relationships and searching through single or multiple columns.

Laravel Cross Eloquent Search This Laravel package allows you to search through multiple Eloquent models. It supports sorting, pagination, scoped quer

Protone Media 844 Dec 25, 2022
Elasticsearch driver for Laravel Scout

Elasticsearch driver for Laravel Scout. Contents Compatibility Installation Configuration Basic Usage Advanced Search Migrations Pitfalls Compatibilit

Ivan Babenko 197 Dec 19, 2022
Driver for Laravel Scout search package based on https://github.com/teamtnt/tntsearch

TNTSearch Driver for Laravel Scout - Laravel 5.3 - 8.0 This package makes it easy to add full text search support to your models with Laravel 5.3 to 8

TNT Studio 1k Dec 27, 2022
Laravel Scout provides a driver based solution to searching your Eloquent models.

Introduction Laravel Scout provides a simple, driver-based solution for adding full-text search to your Eloquent models. Once Scout is installed and c

The Laravel Framework 1.3k Dec 31, 2022
Build and execute an Elasticsearch search query using a fluent PHP API

PACKAGE IN DEVELOPMENT, DO NOT USE YET Build and execute ElasticSearch queries using a fluent PHP API This package is a lightweight query builder for

Spatie 94 Dec 14, 2022
This modules provides a Search API Backend for Elasticsearch.

Search API ElasticSearch This modules provides a Search API Backend for Elasticsearch. This module uses the official Elasticsearch PHP Client. Feature

null 1 Jan 20, 2022
Search products, categories, brands or tags with ElasticSearch

ElasticSearch for Shopaholic This plugin allows you to use ElasticSearch as search engine for Shopaholic. Benefits Easy to install, easy to use Opened

Biz-Mark 4 Feb 18, 2022
Maps Laravel Eloquent models to Elasticsearch types

Elasticquent Elasticsearch for Eloquent Laravel Models Elasticquent makes working with Elasticsearch and Eloquent models easier by mapping them to Ela

Elasticquent 1.3k Jan 4, 2023
Laravel search is package you can use it to make search query easy.

Laravel Search Installation First, install the package through Composer. composer require theamasoud/laravel-search or add this in your project's comp

Abdulrahman Masoud 6 Nov 2, 2022
[Deprecated] We now recommend using Laravel Scout, see =>

[DEPRECATED] Algolia Search API Client for Laravel Algolia Search is a hosted full-text, numerical, and faceted search engine capable of delivering re

Algolia 240 Nov 25, 2022
A php trait to search laravel models

Searchable, a search trait for Laravel Searchable is a trait for Laravel 4.2+ and Laravel 5.0 that adds a simple search function to Eloquent Models. S

Nicolás López Jullian 2k Dec 27, 2022
A scout DB fulltext-based driver that store index data in related tables

A scout DB fulltext-based driver that store index data in related tables This package provide a Laravel/Scout Engine based on database/fulltext only,

Ivano Matteo 10 Nov 10, 2022
Store and retrieve objects from Algolia or Elasticsearch

Store and retrieve objects from a search index This is an opinionated Laravel 5.1 package to store and retrieve objects from a search index. Currently

Spatie 440 Dec 30, 2022
This package offers advanced functionality for searching and filtering data in Elasticsearch.

Scout Elasticsearch Driver ?? Introducing a new Elasticsearch ecosystem for Laravel. ?? This package offers advanced functionality for searching and f

Ivan Babenko 1.2k Dec 20, 2022
Elasticsearch migrations for Laravel

Elastic Migrations Elasticsearch migrations for Laravel allow you to easily modify and share indices schema across the application's environments. Con

Ivan Babenko 151 Dec 20, 2022
Laravel 8.* Elasticsearch Eloquent

Elasticsearch Installation composer require etsetra/elasticsearch Create config file $ php artisan vendor:publish --tag="etsetra-elasticsearch-config

Etsetra 2 Jan 14, 2022
Official PHP low-level client for Elasticsearch.

elasticsearch-php Official low-level client for Elasticsearch. Its goal is to provide common ground for all Elasticsearch-related code in PHP; because

elastic 5k Dec 31, 2022
Elastica is a PHP client for elasticsearch

Elastica: elasticsearch PHP Client All documentation for Elastica can be found under Elastica.io. If you have questions, don't hesitate to ask them on

Nicolas Ruflin 2.2k Dec 23, 2022