Ebben a cikkben egy teljes útmutatót nyújtunk az Elasticsearch és a Laravel használatához. Az Elasticsearch az egyik legjobb megoldás a keresések kezelésére az alkalmazásainkban.
Másrészt a Kibana képes megjeleníteni adatainkat, és lehetővé teszi számunkra azok megosztását.
Feltéve, hogy már van egy Laravel alkalmazásunk ("Dockerize Laravel, Nginx, MariaDB, PhpMyAdmin, Redis és Npm"), és úgy döntünk, hogy hozzáadjuk az Elasticsearch-ot.
Függetlenül attól, hogy az alkalmazását Dockerizáltuk-e vagy sem, megközelítésünk magában foglalja az Elasticsearch és a Kibana Dockeren keresztüli használatát.
Menjünk a docker-compose.yml
fájlunkhoz. (Ha nincs docker-compose.yml
fájl, akkor a projekt gyökérkönyvtárában kell létrehozni)
A Docker Compose fájlunkban két tárolót kell létrehoznunk az alábbiak szerint:
Ezt követően csak le kell futtatni az alábbi parancsot a terminálunkon belül: (Ha a konténerek már futnak, először a docker compose down
parancsot fogjuk futtatni)
docker compose up -d
Ez a parancs létrehozza a szükséges tárolókat, és elindítja azokat.
A environment
szakasz beállít néhány konfigurációs paramétert az Elasticsearch számára. Az discovery.type=single-node
az Elasticsearch csomópontot egyetlen csomópont-klaszterként állítja be. bootstrap.memory_lock=true
zárolja a memóriát, hogy ne lehessen lemezre cserélni. A ES_JAVA_OPTS
a Java kupac méretét 512 MB-ra állítja.
A ulimits
szakasz a memlock
korlátot -1
-re állítja, hogy lehetővé tegye az Elasticsearch számára a memória zárolását.
A ports
beállítás leképezi az Elasticsearch 9200-as HTTP-portját a Docker-gazdagép ugyanarra a portjára. A volumes
szakasz létrehoz egy laravelelastic
nevű kötetet az Elasticsearch adatfájlok tárolására.
MEGJEGYZÉS:
A FORWARD_ELASTIC_PORT
opciót akkor használjuk, ha egyéni portot szeretnénk definiálni szolgáltatásainkhoz, vagy ha valamelyik szolgáltatást helyileg telepítette a docker mellett, és port-interferencia lép fel.
Tehát amikor az alábbi parancsot futtatjuk:
docker ps
Valami ilyesmit kellene látnunk:
Megvannak a szolgáltatásaink és a konténereink, és fel kell lépnünk a Laravel alkalmazásunkra, és be kell állítani az Elasticsearch-et a webalkalmazásunkon belül.
A Laravelnek van egy nagyon szép illesztőprogramja minden keresőmotorhoz, amelyet "Laravel Scoutnak" hívnak. A „Scout” teljes szöveges keresési lehetőséget kínál az alkalmazásunkban.
A cikk írásakor még nem támogatja az Elasticsearch-ot hivatalosan, de ne aggódjon, egy másik, az Explorer nevű csomag segítségével már jó lesz az Elasticsearch használata.
Telepítsük a Laravel Scoutot:
composer require laravel/scout
És tegye közzé a scout konfigurációját az Elasticsearch beállításainak hozzáadásához:
php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"
Ez az. Most telepítjük a Jeroen-G/Explorer csomagot (Elasticsearch illesztőprogram a Laravel Scouthoz):
composer require jeroen-g/explorer
Szükségünk lesz a konfigurációs fájlra az indexeink meghatározásához:
php artisan vendor:publish --tag=explorer.config
Most elkezdhetjük konfigurálni és hozzáadni az Elasticsearch alkalmazást az alkalmazásunkhoz, de egy kis szünet kedvéért láthatjuk az aktív Elasticsearch csomópontot a következő címen: http://localhost:9200
És a http:localhost:5601 a Kibana alapértelmezett irányítópult-címe az ellenőrzéshez:
El kell döntenünk, hogy alkalmazásunk melyik modelljénél használjuk az Elastic-ot. Képzeljük el, hogy van egy cikk modellünk:
Ezt szeretnénk keresni. Először a Laravel\Scout\Searchable;
use Searchable;
tulajdonságát adjuk hozzá.
Ez a tulajdonság hozzáférést biztosít számunkra néhány hasznos módszerhez. toSearchableArray
módszer hozzáadása:
Ez a módszer határozza meg, hogy modellünk mely mezői legyenek kereshetők. Ha nem szabjuk testre, akkor alapértelmezés szerint a modell teljes formája megmarad a keresési indexében.
Meghatározhatunk egy makeAllSearchableUsing
metódust a Cikk modellen. Ez a metódus segít abban, hogy a modellünk Elasticsearch-be történő importálása előtt szükség lehet bármilyen vágyakozó kapcsolatbetöltésre:
Az utolsó módszer, amelyet hozzá kell adnunk, a mappableAs
. Ha ezt nem írjuk meg, akkor az „Elasticsearch megpróbál magától felismerni minden mezőtípust”, de ennek a módszernek az írása hatékonyabb és jobb konfigurációt eredményez. Legyen óvatos az Explored felület implementálásakor!
Elkészültünk a Article
modellel, ezután megnyitjuk a ArticleController
-et, és az Elasticsearch-et használjuk a index()
metóduson:
Tudom, hogy ez elég hosszú történet, de legyetek velem:) mert az eredmény valami fantasztikus
Elkészítettük a modellünket és a vezérlőnket, és már csak néhány apró konfiguráció van hátra. Nyissuk meg a explorer.php
elemet a config mappában, és adjuk hozzá a következő sorokat a csatlakozási részhez:
Egyéni felhasználónév és jelszó megadásával minden biztonságosabb.
Vannak más "csatlakozási" módszerek is, például a felhőkonfiguráció, amelyekről "itt olvashat bővebben". Ezt követően ugyanabban a fájlban javítjuk az indexes tömböt a következővel:
Alapvetően az Elasticsearch-ben indexeljük a modellünket. Végül adja hozzá ezt a két sort a .env
fájlhoz:
Futtassa az alábbi parancsot, és utasítsa a Laravel Scoutot, hogy adjon hozzá rekordokat az Elasticsearch motorhoz, és az Elasticsearch készen áll!
php artisan scout:import App\\Models\\Article
Most már az Elasticsearch-t integráltuk a Laravel-lel, amely használatra kész. Az Elasticsearch azonban egy hatalmas téma, amely számos területet magában foglal, például típusokat, elemzőket, soralapú indexelést és még sok mást. Ha többet szeretne megtudni erről, jelezze, és írok róla még egy cikket!
OLVASS TOVÁBB:
- Laravel Pre-Caching: Növelje alkalmazása sebességét és teljesítményét!
- "Laravel vezérlők, események, figyelők, szolgáltatások és érvényesítés együttes használata!"
- Dockerize Laravel, Nginx, MariaDB, PhpMyAdmin, Redis és Npm
- "Laravel New FindOr() módszer"
- Laravel adjon hozzá előtagot a tömbkulcshoz!