关于laravel使用es的正确姿势
下面由Laravel教程栏目给大家介绍laravel使用es的正确姿势,希望对需要的朋友有所帮助!

Elasticsearch 简介
Elastic 的底层是开源库 Lucene。但是,你没法直接用 Lucene,必须自己写代码去调用它的接口。Elastic 是 Lucene 的封装,提供了 REST API 的操作接口,开箱即用。
课程推荐→:《elasticsearch全文搜索实战》(实战视频)
ES 和 Mysql
ES 里的概念类比于 Mysql 如下图所示:
倒排索引
在说倒排索引之前我们先说说什么是正排索引。正排索引也称为”前向索引”,它是创建倒排索引的基础。
如上在查询一个 keyword 在哪些文档里包含的时候,需对所有的文档进行扫描以确保没有遗漏,这样就使得检索时间大大延长,检索效率低下。这个时候我们就用到了倒排索引,首先将文档分词。
比如我们要查询‘搜索引擎’这个关键词在哪些文档中出现过。首先我们通过倒排索引可以查询到该关键词出现的文档位置是在1和3中;然后再通过正排索引查询到文档1和3的内容并返回结果。
Laravel 使用 ES
安装插件
basemkhirat/elasticsearch 是 Laravel 中使用 ES 的一个扩展,使用起来非常方便:
1)安装方法
$ composer require basemkhirat/elasticsearch
2)发布
$ php artisan vendor:publish –provider=”Basemkhirat\Elasticsearch\ElasticsearchServiceProvider”
配置
这样我们就安装好了,如下是我们的连接配置:
'connections' => [
'default' => [
'servers' => [
[
"host" => env("ELASTIC_HOST", "127.0.0.1"),
"port" => env("ELASTIC_PORT", 9200),
'user' => env('ELASTIC_USER', ''),
'pass' => env('ELASTIC_PASS', ''),
'scheme' => env('ELASTIC_SCHEME', 'http'),
]
],
'index' => env('ELASTIC_INDEX', 'my_index')
]],
servers 里可以加入我们的集群配置。
使用方法
该插件的使用方法可借鉴 Laravel 的查询构造器,支持常用的如 where、whereIn、whereBetween、orderBy、first、get,也支持分页方法paginate。
$documents = ES::connection(“default”)
->index(“my_index”)
->type(“my_type”)
->get(); # return a collection of results
设置字段权重:
ES::type(“my_type”)->search(“hello”, function($search){
$search->boost(2)->fields([“title” => 2, “content” => 1])
})->get();
我们也可以通过修改源码扩充自己需要用到的方法,也可以构造原生的查询语句:
$params['body'] = [ 'aggs' => [ 'all_created' => [ 'terms' => [ 'field' => 'element.raw', 'size' => $this->_mAggsPageSize ], 'aggs' => [ 'sum_pv' => [ 'sum' => ['field' => 'pv'], ], ], ], ], ];
结语
ES 内置分词器对中分支持并不友好,比较推荐的是 IK分词器,需要注意的是ik版本需要与ES的版本号保持一致。
Atas ialah kandungan terperinci 关于laravel使用es的正确姿势. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!
Alat AI Hot
Undress AI Tool
Gambar buka pakaian secara percuma
Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik
AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.
Clothoff.io
Penyingkiran pakaian AI
Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!
Artikel Panas
Alat panas
Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma
SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan
Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa
Dreamweaver CS6
Alat pembangunan web visual
SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)
Topik panas
Bagaimana saya menggunakan sistem pengesahan Laravel untuk mengesahkan data borang?
Jun 22, 2025 pm 04:09 PM
LaravelProvidesrobustToolsforvalidatingFormData.1.BasicValidationCanbedoneUsingStheValidate () Methodincontrollers, Memastikan MetherfieldsMeetcriteriulisikerequired, MaxLength, Oruniquevaluues.2.ForComplexscenarios
Strategi Caching | Mengoptimumkan prestasi Laravel
Jun 27, 2025 pm 05:41 PM
CachechinginlaravelsignificelymproveSapplicationPformanceReberReRDataBasequeriesInesandMinminingRedundantProcessing.TouseCacheFfectely, ikut ikutiTheSeSteps: 1.
Yii vs Laravel: Memilih kerangka PHP yang sesuai untuk projek anda
Jul 02, 2025 am 12:26 AM
Pilihan Yii atau Laravel bergantung kepada keperluan projek dan kepakaran pasukan. 1) Yii sesuai untuk keperluan prestasi tinggi dan mempunyai struktur ringan. 2) Laravel menyediakan fungsi yang kaya, adalah pemaju yang mesra dan sesuai untuk aplikasi yang kompleks. Kedua -duanya berskala, tetapi Yii lebih mudah untuk modular, manakala komuniti Laravel lebih bijak.
Bagaimana saya menggunakan perancah pengesahan terbina dalam Laravel? (PHP Artisan UI Bootstrap/Vue/React -Auth)
Jun 25, 2025 pm 05:20 PM
TosetupLaravel’sbuilt-inauthenticationscaffolding,ensureyouareusingacompatibleversionsuchasLaravel8orearlier,theninstalltheUIpackageviaComposerifnecessary.Next,generatetheauthviewswithBootstrap,Vue,orReactusingthephpartisanuicommand,followedbycompili
Bekerja dengan jadual pivot dalam hubungan laravel banyak-ke-banyak
Jul 07, 2025 am 01:06 AM
TowOrkeffectivyWithPivotTableSinlaravel, firstAccessPivotDataingWithPivot () orwithTimestamps (), thenupdateEntriesWithupdatee XistingPivot (), ManagerelationshipSviadetach () andSync (), AnduseCustompivotModelSwhenneeded.1.usewithPivot () toincludespecificcol
Menambah sokongan berbilang bahasa ke aplikasi Laravel
Jul 03, 2025 am 01:17 AM
Kaedah teras untuk aplikasi Laravel untuk melaksanakan sokongan berbilang bahasa termasuk: menetapkan fail bahasa, penukaran bahasa dinamik, penghalaan URL terjemahan, dan mengurus kekunci terjemahan dalam templat bilah. Pertama, aturkan rentetan setiap bahasa dalam folder yang sepadan (seperti en, es, fr) dalam direktori /sumber /lang, dan tentukan kandungan terjemahan dengan mengembalikan array bersekutu; 2. Terjemahkan nilai utama melalui panggilan fungsi penolong \ _ _ _ _ (), dan gunakan app :: setLocale () untuk menggabungkan sesi atau parameter penghalaan untuk merealisasikan pertukaran bahasa; 3. Untuk URL Terjemahan, laluan boleh ditakrifkan untuk bahasa yang berbeza melalui kumpulan penghalaan prefixed, atau alias laluan dalam fail bahasa yang dipetakan secara dinamik; 4. Simpan kunci terjemahan ringkas dan
Menghantar pelbagai jenis pemberitahuan dengan Laravel
Jul 06, 2025 am 12:52 AM
Laravelprovidesacleanandflexiblaytosendnotificationsviamultiplechannelslikeemail, sms, in-appalerts, andpushnotifications.youdinotificationchannelsinthevia () methodoFanotificationClass, andImplementsPecificmethods (toDDoTaTaStoMail (toDDoTaTaStomail (toDDoTaTaSTOMAIL (
Laravel MVC: Petua dan Trik
Jun 27, 2025 am 12:34 AM
Kaedah untuk menggunakan sepenuhnya corak MVC di Laravel termasuk: 1. Pastikan pelangsingan pengawal dan hanya permintaan proses dan logik tindak balas; 2. Gunakan eloquentorm untuk menentukan hubungan model untuk meningkatkan kecekapan pertanyaan; 3. Gunakan enjin templat bilah untuk menulis pandangan ringkas; 4. Gunakan pengawal sumber untuk menghasilkan operasi CRUD dengan cepat; 5. Melaksanakan pengesahan permintaan untuk memastikan integriti dan keselamatan data; 6. Mengoptimumkan prestasi melalui kegembiraan. Petua ini boleh membantu membina aplikasi web yang cekap dan boleh dipelihara.


