Laravel框架 之 全文搜索

本文的示例代码参考mysql-to-es

目录

  • Service

    • MySQL

    • ElasticSearch

  • Laravel

    • MySQL

    • Scout

  • Test

Service

MySQL

docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.17

docker exec -i mysql mysql -uroot -p123456  <<< "CREATE DATABASE IF NOT EXISTS test DEFAULT CHARSET utf8 COLLATE utf8_general_ci;"

ElasticSearch

docker network create elastic

docker run --network=elastic --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -d elasticsearch:5.6.14

docker run --network=elastic --name kibana -p 5601:5601 -d kibana:5.6.14
docker run --name elasticsearch-kibana -p 9200:9200 -p 9300:9300 -p 5601:5601 -d nshou/elasticsearch-kibana

Laravel

MySQL

composer create-project laravel/laravel mysql-to-es --prefer-dist "5.5.*"

cd mysql-to-es

vim .env
# DB_DATABASE=test
# DB_USERNAME=root
# DB_PASSWORD=123456
php artisan make:seed UsersTableSeeder

vim database/seeds/UsersTableSeeder.php
times(10)
            ->make();
        $user_array = $users->makeVisible(['password', 'remember_token'])->toArray();
        User::insert($user_array);
    }
}
vim database/seeds/DatabaseSeeder.php
call(UsersTableSeeder::class);
    }
}
php artisan migrate --seed

Scout

composer require laravel/scout ^5.0

composer require tamayo/laravel-scout-elastic
vim app/User.php
vim config/app.php
'providers' => [
    Laravel\Scout\ScoutServiceProvider::class,
    ScoutEngines\Elasticsearch\ElasticsearchProvider::class,
],
php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

vim config/scout.php
    'driver' => env('SCOUT_DRIVER', 'elasticsearch'),
    ...
    'elasticsearch' => [
        'index' => env('ELASTICSEARCH_INDEX', 'laravel'),
        'hosts' => [
            env('ELASTICSEARCH_HOST', 'http://localhost:9200'),
        ],
    ],
php artisan scout:import "App\User"
# Imported [App\User] models up to ID: 10
# All [App\User] records have been imported.

Test

vim routes/web.php
query('name'))->get();
});
php artisan serve

curl localhost:8000/search?name=ka | json
[
  {
    "id": 5,
    "name": "Chanel Schiller DVM",
    "email": "[email protected]",
    "created_at": null,
    "updated_at": null
  },
  {
    "id": 6,
    "name": "Kamille Braun V",
    "email": "[email protected]",
    "created_at": null,
    "updated_at": null
  }
]

参考

  • Scout 全文搜索

  • 在Laravel5.5中使用搜索 Elasticsearch

  • Laravel5.5 使用 Elasticsearch 做引擎,scout 全文搜索

你可能感兴趣的:(Laravel框架 之 全文搜索)