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: