PHP

Usando Elasticsearch con PHP – Una guía simple

elastic-search

Elasticsearch es un motor de búsqueda de texto completo de código abierto que permite almacenar y buscar datos en tiempo real. También puedes buscar frases y te dará los resultados en segundos dependiendo de lo grande que sea la base de datos de Elasticsearch. Este motor produce resultados más rápidos que el SQL y es una de las búsquedas más utilizadas en la web. Hay dos maneras de usar Elasticsearch con PHP; una con el uso de curl y la otra usando el cliente oficial de Elasticsearch para PHP. En este tutorial te mostraré cómo usar Elasticsearch usando su cliente PHP. Antes de comenzar, asegúrese de que Elasticsearch esté instalado en su máquina local. Así es como puede hacerlo:

Instalando Elasticsearch para PHP

Lo instalaremos usando el compositor. En la carpeta raíz de tu localhost, crea un nuevo directorio y llámalo elastic_php. En el mismo directorio, crea un nuevo archivo composer.json y pega el siguiente texto en él:

{
	"require": {
		"elasticsearch/elasticsearch": "~2.0"
	}
}

Ejecute la instalación del Composer. Ahora que lo hemos instalado, conectémoslo con PHP.

Conectando Elasticsearch con PHP

Ahora crea un nuevo archivo de script PHP y llámalo index.php dentro del directorio elastic_php y pega el siguiente código en él:

<?php
require 'vendor/autoload.php';
$client = Elasticsearch\ClientBuilder::create()->build();

if ($client) {
	echo 'connected';
}

Guárdalo y ejecuta el guión. Asegúrate de que Elasticsearch se está ejecutando o recibirás un error de conexión.

Indexación de datos en Elasticsearch

Ahora que estamos conectados a Elasticsearch, vamos a indexar algunos datos en él. Abre tu archivo index.php y cambia el siguiente código en él.

<?php
require 'vendor/autoload.php';
$client = Elasticsearch\ClientBuilder::create()->build();

$params = [
	'index' => 'my_index',
	'type' => 'my_type',
	'id' => 'my_id2',
	'body' => [
		'first field' => 'Adding My First Field In Elasticsearch'
	],
];
$response = $client->index($params);
echo $response['created'];

Cuando ejecute el código anterior obtendrá 1 como salida.

Obtener datos de Elasticsearch

Ahora tenemos un índice, obtengamos datos de él. Ahora reemplace el código con el siguiente en su index.php y ejecútelo:

<?php
require 'vendor/autoload.php';
$client = Elasticsearch\ClientBuilder::create()->build();

$params = [
	'index' => 'my_index',
	'type' => 'my_type',
	'id' => 'my_id',
];

$response = $client->get($params);
echo $response['_source']['first field'];

Tendrá el campo que hemos añadido.

Añadiendo mi primer campo en Elasticsearch

Buscando en Elasticsearch

Busquemos algunos datos en Elasticsearch. Ahora abre tu archivo index.php de nuevo y reemplázalo con el siguiente código.

<?php
require 'vendor/autoload.php';
$client = Elasticsearch\ClientBuilder::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>";
}

Ahora entendamos un poco el código. Cuando buscamos nuestra consulta en Elasticsearch regresa con muchos resultados incluyendo el resultado de nuestra consulta específica. Necesitamos obtener nuestro resultado y para ello, primero tenemos que comprobar cuántos resultados tenemos:

$hits = count($response['hits']['hits']);

Entonces obtenemos nuestros resultados, que serán menores que sus impactos porque es una matriz.

while ($i < $hits) {
	$result[$i] = $response['hits']['hits'][$i]['_source'];
	$i++;
}

Después de eso imprimimos el resultado en un navegador. Ahora ejecute el código proporcionado arriba y obtendrá el siguiente resultado (de nuevo):

Añadiendo mi primer campo en Elasticsearch

Conclusión

En este tutorial aprendiste a conectar Elasticsearch con PHP y a guardar y recuperar datos de él. También aprendiste a realizar una búsqueda con PHP y Elasticsearch. Si hay algo que te confunde o quieres saber un poco más, por favor deja un comentario abajo y te daré la solución.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *