larvael 集成 ES 创建一个model 包含 添加数据 更新数据 查询数据
时间: 2024-10-22 14:14:07 浏览: 20
在 Laravel 中集成 Elasticsearch 并创建一个 Model,可以按照以下步骤进行:
1. 安装依赖:首先需要安装 Elasticsearch 的官方 PHP 客户端 `elasticsearch` 和相关的库如 `laravel Scout` 或者 `laravel-mix-esbuild`,分别用于整合搜索功能。你可以通过 Composer 运行以下命令:
```
composer require elasticsearch/elasticsearch scout-elastic
```
2. 设置配置:在 `.env` 文件中添加 Elasticsearch 配置:
```bash
ELASTICSEARCH_HOST=localhost
ELASTICSEARCH_PORT=9200
```
如果有多个集群,也可以设置 `ELASTICSEARCH_URL=http://your-cluster-url:9200`.
3. 注册模型:在 `app/Models` 目录下创建一个新的 Eloquent 模型,比如 `MyIndex.php`,并使用 `Scoutable` trait 以便将模型注册到 Scout:
```php
use Illuminate\Database\Eloquent\Model;
use ScoutElastic\Scoutable;
class MyIndex extends Model implements Scoutable
{
// ...其他属性和方法...
public function searchableAs()
{
return 'my_index'; // 更改为你索引的别名
}
// 可选的:定义索引、映射等
protected static function indexes()
{
return ['my_index'];
}
// 其他方法,如 fillable, guarded...
}
```
4. 数据操作:
- 添加数据:在模型实例化后,可以使用 `save()` 方法保存到 Elasticsearch:
```php
$data = [
'title' => 'Example',
// ...其他字段
];
$indexItem = new MyIndex($data);
$indexItem->save();
```
- 更新数据:已存在于索引中的记录可以通过 ID 更新:
```php
$indexItem = MyIndex::where('id', $itemId)->first(); // 获取记录
$indexItem->title = 'New Title';
$indexItem->save();
```
- 查询数据:使用 Scout 提供的搜索查询 API 或者自定义查询构造器 `Searchable` 接口:
```php
// 使用 Scout 的全局搜索函数
MyIndex::search('example')->get();
// 或者使用 Searchable 接口
$results = MyIndex::query()->match('title', 'example')->get();
```
阅读全文