Elasticsearch es un motor de búsqueda open source que te permite almacenar y buscar datos en tiempo real. Puedes buscar una frase y te devolverá resultados en cuestión de segundos dependiendo de lo extensa que sea la base de datos de Elasticsearch. El motor muestra resultados más rápido que SQL y es uno de los más populares en toda la web. Hay dos maneras de utilizar Elasticsearch con PHP; una es mediante cURL y la otra es utilizando el cliente oficial para PHP de Elasticsearch. En este tutorial te mostraremos como utilizar Elasticsearch utilizando su cliente PHP. Antes de empezar, asegúrate que tienes instalado Elasticsearch en tu máquina local. Así es como puedes hacerlo:
Instalando Elasticsearch para PHP
Vamos a instalarlo utilizando composer. En la carpeta raíz de tu localhost, crea un nuevo directorio y llámalo elastic_php. En dicho directorio, crea un nuevo fichero llamado composer.json y pega el siguiente código en él:
{ "require": { "elasticsearch/elasticsearch": "~2.0" } }
Ejecutar composer install. Ahora que ya lo tenemos instalado, vamos a conectarlo con PHP.
Conectando Elasticsearch con PHP
Ahora vamos a crear un nuevo fichero PHP, al cual llamaremos index.php, dentro del directorio elastic_php. Pega el siguiente código dentro del fichero.
<?php require 'vendor/autoload.php'; $client = ElasticsearchClientBuilder::create()->build(); if ($client) { echo 'connected'; }
Cuando ejecutes este código, obtendrás 1 como salida.
Obteniendo datos de Elasticsearch
Ahora que tenemos un index, vamos a obtener datos de él. Ahora reeemplazamos el código anterior con este que te proporcionamos, en tu index.php, y lo ejecutamos.
<?php require 'vendor/autoload.php'; $client = ElasticsearchClientBuilder::create()->build(); $params = [ 'index' => 'my_index', 'type' => 'my_type', 'id' => 'my_id', ]; $response = $client->get($params); echo $response['_source']['first field'];
Buscando en Elasticsearch
Vamos a buscar algunos datos en Elasticsearch. Abre ahora tu index.php y sobreescríbelo con el siguiente código.
<?php require 'vendor/autoload.php'; $client = ElasticsearchClientBuilder::create()->build(); $params = [ 'index' => 'my_index', 'type' => 'my_type', 'body' => [ 'query' => [ 'match' => [ 'first field' => 'first fiel' ], ], ], ]; $response = $client->search($params); $hits = count($response['hits']['hits']); $result = null; $i = 0; while ($i < $hits) { $result[$i] = $response['hits']['hits'][$i]['_source']; $i++; } foreach ($result as $key => $value) { echo $value['first field'] . "<br>"; }
Vamos a comprender un poco el código anterior. Cuando buscamos nuestra query en Elasticsearch, este devuelve un montón de resultados incluyendo los resultados de nuestra query específicamente. Necesitamos recuperar nuestros resultados de entre todos y para ello, debemos comprobar cuántos resultados tenemos:
$hits = count($response['hits']['hits']);
Después recuperamos nuestros datos de entre todos los resultados, que siempre serán menos que hits porque es un array.
while ($i < $hits) { $result[$i] = $response['hits']['hits'][$i]['_source']; $i++; }
Una vez tenemos todo, podemos mostrar los resultados en el navegador. Ahora ejecuta el código que puedes ver más arriba, para llevar a cabo la búsqueda.
En este tutorial hemos aprendido a conectar Elasticsearch con PHP y cómo guardar y recuperar datos de él. También hemos aprendido a realizar búsquedas con PHP y Elasticsearch. Si hay algo de lo que dudes, por favor déjanos un comentario abajo y trataremos de encontrar la solución.
Fuente: web-development-blog.com