Meilisearch-laravel-scout: рдореИрдВ рдЕрдкрдиреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреЛ рдЕрдиреБрдХреНрд░рдорд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ (рд╡реЗ рдЕрд▓реНрдЧреЛрд▓рд┐рдпрд╛ рдореЗрдВ рдареАрдХ рд╣реИрдВ)

рдХреЛ рдирд┐рд░реНрдорд┐рдд 4 рдЕрдЧре░ 2020  ┬╖  30рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: meilisearch/meilisearch-laravel-scout

рдореИрдВ рд▓рд╛рд░рд╡реЗрд▓ 7, рдПрдордПрд╕ 0.13 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ
рдореИрдВ рдЕрдкрдиреЗ рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдиреБрдХреНрд░рдорд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ:
php artisan scout:import "App\Models\Product"
рддрдм рдореИрдВ рдХрд░рддрд╛ рд╣реВрдВ (рд╕реНрдерд╛рдиреАрдп_рдЙрддреНрдкрд╛рдж рдореЗрд░реА рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рд╣реИ):
curl -X GET 'http://localhost:7700/indexes/local_product/documents'
рдФрд░ рдореБрдЭреЗ [] . рдорд┐рд▓рддрд╛ рд╣реИ

рдЕрдЧрд░ рдореИрдВ рдЕрд▓реНрдЧреЛрд▓рд┐рдпрд╛ рдореЗрдВ рдЗрдВрдбреЗрдХреНрд╕ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдореЗрд░реЗ рджрд╕реНрддрд╛рд╡реЗрдЬ рд╡рд╣рд╛рдВ рдареАрдХ рд╣реИрдВред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЕрдЧрд░ рдореИрдВ рдлрд┐рд▓реНрдореЛрдВ рдХреЛ рдЕрдиреБрдХреНрд░рдорд┐рдд рдХрд░рддрд╛ рд╣реВрдВ:
curl -X POST 'http://127.0.0.1:7700/indexes/movies/documents' --data @movies.json
рдлрд┐рд▓реНрдореЗрдВ рднреА рдЕрдиреБрдХреНрд░рдорд┐рдд рд╣реИрдВред

Laravel integration

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

 public function toSearchableArray()
    {
        $array = $this->toArray();

        $array['id'] = (string)$array['_id'];

        return $array;
    }

рд╡рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ

рд╕рднреА 30 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рд╣реИрд▓реЛ @elfeffe ,

рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдмрд┐рдирд╛ рдЖрдкрдХреА рд╕рд╣рд╛рдпрддрд╛ рдХрд░рдирд╛ рдХрдард┐рди рд╣реИред

рдпрджрд┐ рдЖрдк рдЕрдкрдирд╛ рдореЗрд▓реАрд╕рд░реНрдЪ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рд▓реЙрдЧ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдХреНрдпрд╛ рдЖрдкрдХреЛ рдорд┐рд▓рд╛:

"POST /indexes/local_product/documents?primaryKey=id HTTP/1.1" 202 14 

рдпрджрд┐ рдЖрдкрдиреЗ рдЕрдкрдиреЗ рдЙрддреНрдкрд╛рдж рдореЙрдбрд▓ рдореЗрдВ toSearchableArray() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдХреНрдпрд╛ рдЖрдк рдореБрдЭреЗ рд╕рд╛рдордЧреНрд░реА рджрд┐рдЦрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЙрд╕реА рддреНрд░реБрдЯрд┐ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ рд╕рдХрддрд╛ рд╣реВрдВред

рдореИрдВ рдореЛрдВрдЧреЛрдбреАрдмреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреБрдВрдЬреА _id . рд╣реИ
рдРрд╕рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?
рдореИрдВ рдХреБрдЫ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП toSearchableArray рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рдЕрд▓реНрдЧреЛрд▓рд┐рдпрд╛ рдкрд░ рдЕрдиреБрдХреНрд░рдордгрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдФрд░ рдореИрдВ рдЕрдВрддрд┐рдо рд╕рд░рдгреА рдбрдВрдк рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдпрд╣ рдареАрдХ рд╣реИред
рдореЗрд░реЗ рдкрд╛рд╕ рдЕрднреА рдХрдВрдкреНрдпреВрдЯрд░ рдирд╣реАрдВ рд╣реИ, рдЖрдк рдХреНрдпрд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдореИрдВ рдХреЛрд╢рд┐рд╢ рдХрд░реВрдБ?

рдореИрдВ рд╕рдордЭ рдирд╣реАрдВ рдкрд╛ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдЖрдкрдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ

рдпрджрд┐ рдЖрдк рдЕрдкрдирд╛ рдореЗрд▓реАрд╕рд░реНрдЪ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рд▓реЙрдЧ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдХреНрдпрд╛ рдЖрдкрдХреЛ рдорд┐рд▓рд╛:

рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдЖрдк рдХреНрдпрд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдореИрдВ рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВ

рдЕрдЧрд░ рдореИрдВ рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдБ

curl \-X POST 'http://localhost:7700/indexes/local_product/documents' \--data '[{"id": 287947,"title": "Shazam","poster": "https://image.tmdb.org/t/p/w1280/xnopI5Xtky18MPhK40cZAGAOVeV.jpg","overview": "A boy is given the ability to become an adult superhero in times of need with a single magic word.","release_date": "2019-03-23"}]'

рдореБрдЭреЗ рд╕рдордЭ рдЖ рдЧрдпрд╛
{"updateId":31}

рд▓реЗрдХрд┐рди рдлрд┐рд░ рдореИрдВ рдХрд░рддрд╛ рд╣реВрдБ
curl -X GET 'http://localhost:7700/indexes/local_product/documents'
рдФрд░ рдореБрдЭреЗ рдорд┐рд▓рддрд╛ рд╣реИ

[]
рдлрд┐рд░ рд╕реЗ

рдирдорд╕реНрддреЗ @elfeffe

рдЖрдк рд╣рдореЗрд╢рд╛ рдЕрдкрдбреЗрдЯ рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреНрдпрд╛рджрд╛рддрд░ рдмрд╛рд░ MeiliSearch рдЖрдкрдХреЛ рдмрддрд╛рдПрдЧрд╛ рдХрд┐ рдЕрдкрдбреЗрдЯ рдХреЗ рд╡рд┐рдлрд▓ рд╣реЛрдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рддреНрд░реБрдЯрд┐ рдХреНрдпрд╛ рдереАред

рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ: рдПрдХ рдЕрджреНрдпрддрди рд╕реНрдерд┐рддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ

рдФрд░ рдЖрдЦрд┐рд░реА рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЖрдк рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

curl -X GET 'http://localhost:7700/indexes/local_product/updates/31'

рдЬреЛ рдЖрдкрдХреЛ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рджреЗрдиреА рдЪрд╛рд╣рд┐рдПред

рдореИрдВ рдореЛрдВрдЧреЛрдбреАрдмреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреБрдВрдЬреА _id . рд╣реИ
рдРрд╕рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?

рдЬрдм рдЖрдкрдиреЗ рдЕрдкрдиреА рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ local_product рдмрдирд╛ рд▓реА рдереА рддреЛ рдХреНрдпрд╛ рдЖрдкрдиреЗ рдХреБрдВрдЬреА рдкреИрд░рд╛рдореАрдЯрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдерд╛?
php artisan scout:index local_product --key _id

рдореИрдВ рдХреБрдЫ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП toSearchableArray рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рдЕрд▓реНрдЧреЛрд▓рд┐рдпрд╛ рдкрд░ рдЕрдиреБрдХреНрд░рдордгрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдФрд░ рдореИрдВ рдЕрдВрддрд┐рдо рд╕рд░рдгреА рдбрдВрдк рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдпрд╣ рдареАрдХ рд╣реИред

рдХреНрдпрд╛ рдЖрдк toSearchableArray() рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдХреЗ рднреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдпрд╣рд╛рдВ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреА рдХреАрдордд рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИред

рдореИрдВрдиреЗ SearchableArray() рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рд╣реИ
рддрдм рдореИрдВрдиреЗ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ:
php artisan scout:index local_product --key _id
рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ред

рдлрд┐рд░ рдХрд░рдирд╛
php artisan scout:index local_product --key id
рдХреЗ рд╕рд╛рде рд╕рд╛рде

/**
     * Get the value used to index the model.
     *
     * <strong i="14">@return</strong> mixed
     */
    public function getScoutKey()
    {
        return $this->id;
    }

    /**
     * Get the key name used to index the model.
     *
     * <strong i="15">@return</strong> mixed
     */
    public function getScoutKeyName()
    {
        return 'id';
    }

рдХреБрдЫ рдирд╣реАрдВ, рдЬрдм рдореИрдВ рдХрд░рддрд╛ рд╣реВрдБ
curl -X GET 'http://localhost:7700/indexes/local_product/documents'

рдореБрдЭреЗ рд╕рд┐рд░реНрдл рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдорд┐рд▓рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдиреБрдХреНрд░рдорд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ

curl \-X POST 'http://localhost:7700/indexes/local_product/documents' \--data '[{"id": 287947,"title": "Shazam","poster": "https://image.tmdb.org/t/p/w1280/xnopI5Xtky18MPhK40cZAGAOVeV.jpg","overview": "A boy is given the ability to become an adult superhero in times of need with a single magic word.","release_date": "2019-03-23"}]'

рдХреНрдпрд╛ рдХреЛрдИ рд▓реЙрдЧ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ рдЬрд╛рдВрдЪ рд╕рдХрддрд╛ рд╣реВрдВ?

рдЬрдм рдЖрдк рдЕрдкрдирд╛ рдбреЗрдЯрд╛ рдЖрдпрд╛рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХреНрдпрд╛ рдЖрдкрдХреЛ рдРрд╕рд╛ рдХреБрдЫ рдорд┐рд▓рддрд╛ рд╣реИ:

shok@pop-os:~/web/blog$ php artisan scout:import "App\Models\Post"
Imported [App\Models\Post] models up to ID: 100
All [App\Models\Post] records have been imported.

рд▓реЙрдЧ рд╕реНрдерд┐рдд рд╣реИрдВ storage/logs/laravel.log

рдХреНрдпрд╛ рдЖрдкрдиреЗ рдЕрдкрдиреЗ .env рдореЗрдВ рдХреНрдпреВ => рд╕рддреНрдп рдХреЛ scout.php рдпрд╛ SCOUT_QUEUE=true рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдерд╛?

рдореИрдВрдиреЗ рдХрддрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдФрд░ рдЧрд▓рдд рджреЛрдиреЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рд╣реИред рд╣рдореЗрд╢рд╛ рдореБрдЭреЗ рдорд┐рд▓рддрд╛ рд╣реИ

рдЖрдпрд╛рддрд┐рдд [AppModelsProduct] рдореЙрдбрд▓ рдЖрдИрдбреА рддрдХ: 5eea4b314c80095faf5be593
рдЖрдпрд╛рддрд┐рдд [AppModelsProduct] рдореЙрдбрд▓ рдЖрдИрдбреА рддрдХ: 5eea4bd94c80095faf5be787
рдЖрдпрд╛рддрд┐рдд [AppModelsProduct] рдореЙрдбрд▓ рдЖрдИрдбреА рддрдХ: 5eea4cc34c80095faf5be97b
рдЖрдпрд╛рддрд┐рдд [AppModelsProduct] рдореЙрдбрд▓ рдЖрдИрдбреА рддрдХ: 5eea4dfa4c80095faf5beb6f
рдЖрдпрд╛рддрд┐рдд [AppModelsProduct] рдореЙрдбрд▓ рдЖрдИрдбреА рддрдХ: 5eea4f6b4c80095faf5bed63
рдЖрдпрд╛рддрд┐рдд [AppModelsProduct] рдореЙрдбрд▓ рдЖрдИрдбреА рддрдХ: 5eea51164c80095faf5bef57
рдЖрдпрд╛рддрд┐рдд [AppModelsProduct] рдореЙрдбрд▓ рдЖрдИрдбреА рддрдХ: 5eea524e4c80095faf5bf099

рд▓реЗрдХрд┐рди рдХреЛрдИ рдбреБрдкреНрд▓реАрдХреЗрдЯ рдирд╣реАрдВ рд╣реИрдВред
рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рд▓рд╛рд░реНрд╡рд╛ рдХреЗ рд▓реЙрдЧ рдХрд╣рд╛рдВ рд╕реНрдерд┐рдд рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╡рд╣рд╛рдВ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реИ, рдЬреЛ рдореИрдВ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рд╡рд╣ рдПрдордПрд╕ рд▓реЙрдЧ рд╣реИрдВред
рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдпрд╣ рджреЗрдЦрдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ?

рд╕рднреА рд╕рдорд╛рди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде, рдЕрд▓реНрдЧреЛрд▓рд┐рдпрд╛ рдореЗрд░реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреЛ рдЕрдиреБрдХреНрд░рдорд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИред

рдареАрдХ рд╣реИ, Meilisearch laravel scout рдХреЗрд╡рд▓ рдПрдХ рдЗрдВрдЬрди рд╣реИ рдЬреЛ Algolia рдХреЗ рдХреЙрдкреА рдкреЗрд╕реНрдЯ рдЬреИрд╕рд╛ рд╣реИред рддреЛ рдпрд╣ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЗрд╕реЗ рдХрднреА рднреА рдореЛрдВрдЧреЛрдбрдм рдХреЗ рд╕рд╛рде рдЪрд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХреА рд╣реИ ...

@eskombro @curquiza рдПрдордПрд╕ рд▓реЙрдЧ рдХрд╛ рдЬрд╡рд╛рдм рджреЗ рд╕рдХрддрд╛ рд╣реИред

рдпрд╣ рдореЛрдВрдЧреЛрдбреАрдмреА рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдореЙрдбрд▓ MySQL рд╣реИ рдФрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ, рдпрд╣ MongoDB / Meilisearch рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ Algolia рднреА MongoDB рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдореИрдВ рдПрдордПрд╕ рд╕реЗ рдХреБрдЫ рд▓реЙрдЧ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ, рдпрд╣ рджреБрдЦ рдХреА рдмрд╛рдд рд╣реИ рдЕрдЧрд░ рдЕрд▓реНрдЧреЛрд▓рд┐рдпрд╛ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдореАрд▓реАрд╕рд░реНрдЪ рдирд╣реАрдВред

рдореИрдВ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЦреЛрджрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЖрдкрдХреА рдорджрдж рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рдХрд┐ рдореИрдВ рд▓рд╛рд░реНрд╡рд╛ рдХреЗ рд╕рд╛рде mongoDB рдХреИрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ

рдЕрднреА рдХреЗ рд▓рд┐рдП, MeiliSearch рд▓реЙрдЧ рд╕реАрдзреЗ stdout рдкрд░ рдореБрджреНрд░рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЗрд╕ рдмрд╛рдд рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЕрдкрдирд╛ MeiliSearch рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХрд╣рд╛рдВ рдЪрд▓рд╛ рд░рд╣реЗ рд╣реИрдВред рдпрд╣ рдХрд╣рд╛рдБ рдЪрд▓ рд░рд╣рд╛ рд╣реИ?

рдореИрдВрдиреЗ рдпрд╣рд╛рдВ MeiliSearch рдореЗрдВ рд▓рдЧрд╛рддрд╛рд░ рд▓реЙрдЧ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдореБрджреНрджрд╛ рдЦреЛрд▓рд╛: https://github.com/meilisearch/MeiliSearch/issues/898

@elfeffe рдХреНрдпрд╛ рдЖрдкрдиреЗ рдкрд┐рдЫрд▓реА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд╕реБрдЭрд╛рдП рдЧрдП рдЕрдкрдбреЗрдЯ рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХреА? рдпрджрд┐ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ MeilISearch рдХреЛ рднреЗрдЬреЗ рдЧрдП рдереЗ рдФрд░ рдЖрдкрдХреЛ рдПрдХ рд╕реНрдерд┐рддрд┐ рдЖрдИрдбреА рдорд┐рд▓ рдЧрдИ рдереА, рддреЛ рд╕рдВрднрд╡рддрдГ рдЖрдкрдХреЛ рдЙрд╕ рдЕрджреНрдпрддрди рд╕реНрдерд┐рддрд┐ рдХреЗ рдЕрдВрджрд░ рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА рдорд┐рд▓ рдЬрд╛рдПрдЧреА рдХрд┐ рдЬрдм MeilISearch рдЕрдиреБрдХреНрд░рдордгрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИ рддреЛ рд╕рдорд╕реНрдпрд╛ рдХреНрдпрд╛ рд╣реИред рдЗрд╕реЗ рдЖрдЬрдорд╛рдПрдВ: https://github.com/meilisearch/meilisearch-laravel-scout/issues/36#issuecomment -668787383

рдпрд╣ рджреЗрдЦреЛ

curl \-X POST 'http://localhost:7700/indexes/local_product/documents' \--data '[{"id": 287947,"title": "Shazam","poster": "https://image.tmdb.org/t/p/w1280/xnopI5Xtky18MPhK40cZAGAOVeV.jpg","overview": "A boy is given the ability to become an adult superhero in times of need with a single magic word.","release_date": "2019-03-23"}]'

рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди

curl \-X POST 'http://localhost:7700/indexes/local_product/documents' \--data '[{"id": 5eea4bd94c80095faf5be787,"title": "Shazam 2","poster": "https://image.tmdb.org/t/p/w1280/xnopI5Xtky18MPhK40cZAGAOVeV.jpg","overview": "A boy is given the ability to become an adult superhero in times of need with a single magic word.","release_date": "2019-03-23"}]'

"5eea4bd94c80095faf5be787" рдПрдХ MongoDB _id . рд╣реИ
рдпрд╣ рд╕реБрдВрджрд░рддрд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ

{"message":"рдЕрдорд╛рдиреНрдп JSON: рд▓рд╛рдЗрди 1 рдХреЙрд▓рдо 11 рдкрд░ рдЕрдорд╛рдиреНрдп рдирдВрдмрд░", "рддреНрд░реБрдЯрд┐ рдХреЛрдб": "bad_request", "errorType": "invalid_request_error", "errorLink": " https://docs.meilisearch.com/errors #bad_request "}

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ JSON рдорд╛рдиреНрдп рд╣реИ, MS рдФрд░ рдХрд╕реНрдЯрдо рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдХреБрдЫ рд╕рдорд╕реНрдпрд╛ рд╣реИред
рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ рд▓рдВрдмрд╛рдИ, рдЕрдХреНрд╖рд░ рдпрд╛ рдХреНрдпрд╛ рд╣реИред

рдХреБрдЫ рдХреЛрд╢рд┐рд╢реЛрдВ рдХреЗ рдмрд╛рдж рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкрддреНрд░ рд╕рдорд╕реНрдпрд╛ рд╣реИрдВ, рдПрдордПрд╕ рдЖрдИрдбреА рдкрд░ рдкрддреНрд░ рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд▓реИрд░рд╛рд╡реЗрд▓ рдиреЗ рдЖрдкрдХреЛ рд╡рд╣рд╛рдВ рдкрддреНрд░ рдбрд╛рд▓рдиреЗ рджрд┐рдпрд╛ред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ

рд╣рд╛рдВ, рдЖрдкрдХреЛ рдмрд╕ рдЗрд╕реЗ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рднреЗрдЬрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдЬреЛ рджреЛрд╣рд░реЗ рдЙрджреНрдзрд░рдг рдЪрд┐рд╣реНрдиреЛрдВ рд╕реЗ рдШрд┐рд░рд╛ рд╣реБрдЖ рд╣реИ

рдпрд╣ $#$ "id": 5eea4bd94c80095faf5be787 $#$ рдХреЗ рдмрдЬрд╛рдп "id": "5eea4bd94c80095faf5be787" рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ 5eea4bd94c80095faf5be787 рдПрдХ рдорд╛рдиреНрдп рд╕рдВрдЦреНрдпрд╛ рдирд╣реАрдВ рд╣реИ

рд▓реЗрдХрд┐рди рдореИрдВ рдпрд╣ рдирд┐рдпрдВрддреНрд░рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рдХрд┐ рдЖрдкрдХрд╛ рд╕реНрдХрд╛рдЙрдЯ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЗрд╕реЗ рдХреИрд╕реЗ рднреЗрдЬрддрд╛ рд╣реИ

рдРрд╕рд╛ рдХрд░рддреЗ рд╣реБрдП рднреА

/**
     * Get the value used to index the model.
     *
     * <strong i="6">@return</strong> mixed
     */
    public function getScoutKey()
    {
        return (string)$this->_id;
    }

рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдЗрдВрдЬрди рдХреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЖрдИрдбреА рдХреЛ рд╕рдВрднрд╛рд▓рдирд╛ рдЪрд╛рд╣рд┐рдП

toSearchableArray() рдореЗрдВ рд╡рд╣реА рдХрд╛рдо рдХрд░реЗрдВ

return [ 'id' => (string) $this->_id]
or
return [ '_id' => (string) $this->_id]

рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЖрдкрдиреЗ рдХреБрдВрдЬреА рдХреЗ рд░реВрдк рдореЗрдВ рдХреНрдпрд╛ рд╕реЗрдЯ рдХрд┐рдпрд╛ рд╣реИ

 public function toSearchableArray()
    {
        $array = $this->toArray();

        $array['id'] = (string)$array['_id'];

        return $array;
    }

рд╡рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ

рдПрдХ рдЕрдВрддрд┐рдо рдмрд╛рддред
Algolia рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИ рдХрд┐ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ, рд╕реВрдЪрдХрд╛рдВрдХ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд╕рд╛рдеред
рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ, рдЕрдЧрд░ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ рддреЛ рдЕрд▓реНрдЧреЛрд▓рд┐рдпрд╛ рдЗрдВрдбреЗрдХреНрд╕ рдмрдирд╛рддрд╛ рд╣реИ, рдФрд░ рдореИрдВ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд░реВрдкрд╛рдВрддрд░рдг рдХреЗ рдЕрдХреНрд╖рд░реЛрдВ рдХреЗ рд╕рд╛рде рдЖрдИрдбреА рдЗрдВрдбреЗрдХреНрд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдордПрд╕ рдореЗрдВ рджреЛрдиреЛрдВ рд╕реБрд╡рд┐рдзрд╛рдПрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред

рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ, рдЕрдЧрд░ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ рддреЛ рдЕрд▓реНрдЧреЛрд▓рд┐рдпрд╛ рдЗрдВрдбреЗрдХреНрд╕ рдмрдирд╛рддрд╛ рд╣реИ

рджрд░рдЕрд╕рд▓, MeiliSearch API рдЕрднреА рддрдХ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рд╣реИрдВрдбрд▓ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕рдорд╛рдзрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдорд╛рд░реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдПрд╕рдбреАрдХреЗ get_or_create_index рд╡рд┐рдзрд┐ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ (рдЬреИрд╕рд╛ рдХрд┐ PHP рдПрд╕рдбреАрдХреЗ рдХрд░рддрд╛ рд╣реИ)

рдФрд░ рдореИрдВ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд░реВрдкрд╛рдВрддрд░рдг рдХреЗ рдЕрдХреНрд╖рд░реЛрдВ рдХреЗ рд╕рд╛рде рдЖрдИрдбреА рдЕрдиреБрдХреНрд░рдорд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

рдЖрдкрдХреЛ рдЬреЛ рд╕рдорд╕реНрдпрд╛ рдереА рд╡рд╣ JSON рд╡реИрдзрддрд╛ рд╕реЗ рдЖрдИ рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдЕрд▓реНрдЧреЛрд▓рд┐рдпрд╛ рдПрдкреАрдЖрдИ рдЕрдорд╛рдиреНрдп JSON рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ: рдЗрд╕реЗ рдЙрджреНрдзреГрдд рдХрд┐рдП рдмрд┐рдирд╛ рдЕрдХреНрд╖рд░реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдирдВрдмрд░ рднреЗрдЬрдирд╛ ( " ) рдХреЛ рдЕрдорд╛рдиреНрдп JSON рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

рдЕрд▓реНрдЧреЛрд▓рд┐рдпрд╛ рдбреИрд╢рдмреЛрд░реНрдб рджреЗрдЦреЗрдВ:

Capture dтАЩe╠Бcran 2020-08-06 a╠А 10 52 59

Capture dтАЩe╠Бcran 2020-08-06 a╠А 10 53 15

рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЕрд▓реНрдЧреЛрд▓рд┐рдпрд╛ рдХрд╛ рд▓рд╛рд░рд╡реЗрд▓ рдПрд╕рдбреАрдХреЗ рдЖрдкрдХреЗ рдирдВрдмрд░ рдХреЛ рдЕрдХреНрд╖рд░реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдмрджрд▓ рджреЗрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдХреЛрдИ рд╡рд┐рдлрд▓рддрд╛ рдирд╣реАрдВ рд╣реБрдИ

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдордПрд╕ рдореЗрдВ рджреЛрдиреЛрдВ рд╕реБрд╡рд┐рдзрд╛рдПрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред

рддреЛ рд╢рд╛рдпрдж meilisearch-laravel-scout рдореЗрдВ "рдЙрджреНрдзрд░рдг рд╕реБрд╡рд┐рдзрд╛" рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди MeiliSearch рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рд╡реИрдз JSON рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИ

рд╣рд╛рдВ, рджреЛрдиреЛрдВ рд╣реА рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдореИрдВ рдЗрд╕ рд╕реНрдХрд╛рдЙрдЯ рдЗрдВрдЬрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд╣рдо рдпрд╣рд╛рдВ рд╕реНрдХрд╛рдЙрдЯ рдПрдХреАрдХрд░рдг рдореЗрдВ рд╣реИрдВред
рдПрд╕рдбреАрдХреЗ рдЗрдВрдбреЗрдХреНрд╕ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдзрд┐ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЗрдВрдбреЗрдХреНрд╕ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ рддреЛ рд╕реНрдХрд╛рдЙрдЯ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рдЕрдХреНрд╖рд░реЛрдВ рдХреЗ рд╕рд╛рде рдЖрдИрдбреА рдХреЗ рд╕рд╛рде, рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдЬреЗрдПрд╕рдУрдПрди рд╡рд┐рдХреГрдд рд╣реИ, рд▓реЗрдХрд┐рди рд╕реНрдХрд╛рдЙрдЯ рдЗрдВрдЬрди рд╡рд┐рдлрд▓ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред
рдЬреИрд╕рд╛ рдХрд┐ рдЕрд▓реНрдЧреЛрд▓рд┐рдпрд╛ рдПрдХ рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡рд╣ рдЕрдХреНрд╖рд░реЛрдВ рдХреЗ рд╕рд╛рде рд╡рд┐рдлрд▓ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

рдареАрдХ рд╣реИ рдареАрдХ рд╣реИ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖ рд░рд╣рд╛ рдерд╛

рд╡реЗ рддрдм рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреА рд╕реБрд╡рд┐рдзрд╛рдПрдБ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ! рдореИрдВ

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рд╣рдореЗрдВ рд╕реЛрдЪрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХреНрдпрд╛ рд╣рдо рдЗрд╕реЗ meilisearch-php рдореЗрдВ рдпрд╛ meilisearch-laravel-scout рдкреИрдХреЗрдЬ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред

@curquiza
рдпрд╣ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рджреЛрдиреЛрдВ рдЕрдЪреНрдЫреЗ рд╣реИрдВред

рдЕрдЧрд░ рд╣рдо рдЗрд╕реЗ рд╕реНрдХрд╛рдЙрдЯ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рд┐рдореНрдлрдиреА (рдФрд░ рдЕрдиреНрдп рдврд╛рдВрдЪреЗ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди) рдХреЛ рднреА рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП (рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдорд╛рдорд▓рд╛ рд╣реЛ)ред рддреЛ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЗрд╕реЗ рдПрд╕рдбреАрдХреЗ рдореЗрдВ рд░рдЦрдирд╛ рдмреЗрд╣рддрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╕реНрдХрд╛рдЙрдЯ рдЗрд╕реЗ рдЕрд▓реНрдЧреЛрд▓рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрд▓реНрдЧреЛрд▓рд┐рдпрд╛ PHP рдПрд╕рдбреАрдХреЗ рджреНрд╡рд╛рд░рд╛ рд╕рдВрднрд╛рд▓ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрдм рдореЗрд░реЗ рдкрд╛рд╕ рдереЛрдбрд╝рд╛ рдЦрд╛рд▓реА рд╕рдордп рд╣реЛрдЧрд╛ рддреЛ рдореИрдВ рдЗрд╕реЗ рджреЗрдЦ рд▓реВрдВрдЧрд╛ред

@shokme , рдЖрдк рд╕рд╣реА рдХрд╣ рд░рд╣реЗ рд╣реИрдВ, рдпрд╣ рд▓рд╛рд░реНрд╡реЗрд▓-рд╕реНрдХрд╛рдЙрдЯ рдПрдХреАрдХрд░рдг рдореЗрдВ PHP рдПрд╕рдбреАрдХреЗ рдореЗрдВ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рд╣рдореЗрдВ рдЕрдкрдиреА рдЬрд╛рдВрдЪ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдПрдВ, рдореИрдВ рддрджрдиреБрд╕рд╛рд░ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЖрдЧреЗ рдмрдврд╝рд╛рдКрдВрдЧрд╛ (рдпрд╛ рдПрдХ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдКрдВрдЧрд╛)! рдореИрдВ

рдРрд╕реЗ рдореЗрдВ рдкреВрд░реЗ рдорд╛рдорд▓реЗ рдХреА рдЬрд╛рдВрдЪ рдХреЗ рдмрд╛рдж.
рдореИрдВрдиреЗ jenssegers/laravel-mongodb рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд╛рд░реНрд╡рд╛ рдореЗрдВ рдореЛрдВрдЧреЛрдбрдм рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИред

рдореИрдВрдиреЗ рдЕрдкрдиреА рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдмрдирд╛рдХрд░ рд╢реБрд░реБрдЖрдд рдХреА рд╣реИред
php artisan scout:index cars -k _id

рдПрдХ рдореЙрдбрд▓ рдмрдирд╛рдПрдВ

<?php

namespace App;

use Jenssegers\Mongodb\Eloquent\Model;
use Laravel\Scout\Searchable;

class Car extends Model
{
    use Searchable;

    public function getScoutKey() // not required if this is already your primary key
    {
        return $this->_id;
    }

    public function getScoutKeyName() // not required if this is already your primary key
    {
        return '_id';
    }
}

рдПрдХ рдирдИ рдХрд╛рд░ рдмрдирд╛рдирд╛

$car = new App\Car();
$car->name = 'mustang';
$car->constructor = 'ford';
$car->type = 'muscle';
$car->horses = 280;
$car->save();

рдореЙрдбрд▓ рдХреЛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЗ рдореЗрд▓реАрд╕рд░реНрдЪ рдореЗрдВ рднреЗрдЬ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛!

{
  "status": "processed",
  "updateId": 1,
  "type": {
    "name": "DocumentsAddition",
    "number": 1
  },
  "duration": 0.005275826,
  "enqueuedAt": "2020-08-29T17:43:55.104917708Z",
  "processedAt": "2020-08-29T17:43:55.121602037Z"
}

рдЦреЛрдЬ рдХрд░рддреЗ рд╕рдордп рдореБрдЭреЗ рд╕рд╣реА рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓рддрд╛ рд╣реИ

App\Car::search('mustang')->get();

`` `рдЬреЗрд╕рди
[
{
"_id": "5f4a93dbd9668370086c7752",
"рдирд╛рдо": "рдорд╕реНрдЯреИрдВрдЧ",
"рдХрдиреНрд╕реНрдЯреНрд░рдХреНрдЯрд░": "рдлреЛрд░реНрдб",
"рдкреНрд░рдХрд╛рд░": "рдорд╛рдВрд╕рдкреЗрд╢реА",
"рдШреЛрдбрд╝реЗ": 280,
"updated_at": "2020-08-29T17:43:55.102000Z",
"created_at": "2020-08-29T17:43:55.102000Z"
}
]

The only problem I have encounter while trying to reproduce the bug was by forgot to set `_id` has primaryKey
and the update status was returning:
```json
{
  "status": "failed",
  "updateId": 3,
  "type": {
    "name": "DocumentsAddition",
    "number": 1
  },
  "error": "serializer error; Primary key is missing.",
  "duration": 9.817e-6,
  "enqueuedAt": "2020-08-29T17:21:00.098580201Z",
  "processedAt": "2020-08-29T17:21:00.100495474Z"
}

рддреЛ, рдИрдорд╛рдирджрд╛рд░ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рдХрд┐ рдЖрдкрдХреЛ $this->_id @elfeffe рдкрд░ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╡рд╛рдкрд╕ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдорд┐рд▓рддреА рд╣реИ

@shokme рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ред рдореИрдВ рдХреБрдЫ рджрд┐рдиреЛрдВ рдореЗрдВ рдЦреЛрдЬ рдХреЗ рд╕рд╛рде рдЕрдкрдирд╛ рдХрд╛рдо рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░ рджреВрдВрдЧрд╛ рдФрд░ рдЕрдЧрд░ рдореБрдЭреЗ рдХреБрдЫ рдирдпрд╛ рдорд┐рд▓рддрд╛ рд╣реИ рддреЛ рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛ рджреВрдВрдЧрд╛ред
рдПрд╕рдбреАрдХреЗ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЗрдВрдбреЗрдХреНрд╕ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреИрд╕рд╛ рдХрд┐ рдЕрд▓реНрдЧреЛрд▓рд┐рдпрд╛ рдХрд░рддрд╛ рд╣реИ, рдЧрд▓рддрд┐рдпреЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рд╣реА I рдХреЗ рд╕рд╛рдеред

рдПрд╕рдбреАрдХреЗ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЗрдВрдбреЗрдХреНрд╕ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреИрд╕рд╛ рдХрд┐ рдЕрд▓реНрдЧреЛрд▓рд┐рдпрд╛ рдХрд░рддрд╛ рд╣реИ, рдЧрд▓рддрд┐рдпреЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рд╣реА I рдХреЗ рд╕рд╛рдеред

рдЗрд╕реЗ MeiliSearch рдХреЛрд░-рдЗрдВрдЬрди рдореЗрдВ рдирд┐рдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ! рдореИрдВ
https://github.com/meilisearch/MeiliSearch/issues/918

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

dreamcog picture dreamcog  ┬╖  14рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

milosevicn picture milosevicn  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

curquiza picture curquiza  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

JexPY picture JexPY  ┬╖  8рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

husonghua picture husonghua  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ