开发环境 Laravel 8 Docker mysql 5.7 elasticsearch 7.9.1 ik 7.9.11.数据库
CREATE TABLE `posts` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `title` varchar(200) NOT NULL DEFAULT '', `created_at` timestamp NULL DEFAULT NULL, `updated_at` timestamp NULL DEFAULT NULL, `deleted_at` timestamp NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE, UNIQUE KEY `post-title` (`title`) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4;2.Docker 安装 Elasticsearch 容器 2-1.将以下内容 追加 docker-compose.yml
elasticsearch:
container_name: xb_elasticsearch
image: elasticsearch:7.9.1
environment:
- "discovery.type=single-node"
networks:
- wb_net
ports:
- 9200:9200
volumes:
- './storage/elasticsearch:/var/lib/elasticsearch'
2-2.重新构建容器 docker-compose up -d && docker-compose restart
3.进入 xb_elasticsearch 容器 并安装 IK 分词器
docker exec -it xb_elasticsearch bash ./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.9.1/elasticsearch-analysis-ik-7.9.1.zip -y exit;4.重启容器 docker-compose restart 验证 elasticsearch 是否安装成功,点击我 如下图所示安装成功 5.安装composer 包 并 发布服务
composer require laravel/scout composer require matchish/laravel-scout-elasticsearch php artisan vendor:publish --provider="LaravelScoutScoutServiceProvider"6.env 下追加:
SCOUT_DRIVER=MatchishScoutElasticSearchEnginesElasticSearchEngine ELASTICSEARCH_HOST=物理机ip(或容器名称):92007.注册服务 config/app.php.providers
MatchishScoutElasticSearchElasticSearchServiceProvider::class8.清除配置缓存
php artisan config:clear9.创建索引配置文件 (config/elasticsearch.php)
[
'mappings' => [
'post-title' => [ //数据库索引名称
"properties"=> [
"title"=> [ //字段
"type"=> "text",
"analyzer"=> "ik_max_word",
"search_analyzer"=> "ik_smart"
]
]
]
]
],
];
10.配置Model
apply($query);
}
public function searchableAs()
{
return 'post-title';
}
public function toSearchableArray()
{
return [
'title' => self::query()
];
}
public function getScoutKey()
{
return $this->id;
}
public function getScoutKeyName()
{
return 'id';
}
}
11.导入Model
php artisan scout:import12.测试数据
INSERT INTO `posts` (`title`) VALUES ('看一遍闭着眼都会安装Lua1');
13.创建 ElasticTest
php artisan make:command ElasticTest
argument('query'))->get()->toArray();
dd($articles);
}
}
elasticsearch 对比 Like 模糊查询
LIke
elasticsearch
END



