Recherches PHP basées sur ElasticSearch

angryTom
Libérer: 2023-04-08 12:28:01
avant
4032 Les gens l'ont consulté

ElasticSearch est un serveur de recherche basé sur Lucene. Il fournit un moteur de recherche en texte intégral distribué multi-utilisateurs basé sur une interface Web RESTful. Développé en Java et publié en open source selon les termes de la licence Apache, Elasticsearch est un moteur de recherche populaire au niveau des entreprises. Conçu pour être utilisé dans le cloud computing, il permet d'effectuer une recherche en temps réel, est stable, fiable, rapide et facile à installer et à utiliser.

Recherches PHP basées sur ElasticSearch

Recommandation de cours → : "Elasticsearch Full Text Search Practice" (Vidéo pratique)

Extrait du cours "Solution concurrente pour des dizaines de millions de données (théorique + pratique)"

Recherche PHP basée sur ElasticSearch

Le faire Lors de la recherche, j'ai pensé à ElasticSearch , et il prend également en charge PHP, alors j'ai fait un exemple simple pour tester Ça faisait du bien, alors j'ai fait un enregistrement.

Environnement

php 7.2

elasticsearch 6.2 Télécharger

elasticsearch-php 6 Télécharger

Installez elasticsearch

Téléchargez le fichier source, décompressez-le, créez un nouvel utilisateur et remplacez le groupe du répertoire par cet utilisateur, car elasticsearch ne peut pas être démarré avec l'utilisateur root.

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.3.tar.gz
tar zxvf elasticsearch-6.2.3.tar.gz
useradd elasticsearch
password elasticsearch
chown elasticsearch:elasticsearch elasticsearch-6.2.3
cd elasticsearch-6.2.3
./bin/elasticsearch  // 启动
Copier après la connexion

Installer l'extension PHP

J'utilise composer Installer elasticsearch-php. Ajoutez "elasticsearch/elasticsearch": "~6.0" au fichier composer.json et exécutez la composer update.

{
  "require": {
    // ...
    "elasticsearch/elasticsearch": "~6.0"
    // ...
  }
}
Copier après la connexion

Exemple de test

Créer un tableau et tester des données

J'ai préparé un tableau d'articles pour les tests. Le premier est. pour créer un tableau, puis écrivez les données de test. Une fois la préparation terminée, commencez à éditer les cas de test.

create table articles(
  id int not null primary key auto_increment,
  title varchar(200) not null comment '标题',
  content text comment '内容'
);
insert into articles(title, content) values ('Laravel 测试1', 'Laravel 测试文章内容1'),
('Laravel 测试2', 'Laravel 测试文章内容2'),
('Laravel 测试3', 'Laravel 测试文章内容3');
Copier après la connexion

Lire les données de Mysql

try {
  $db = new PDO('mysql:host=127.0.0.1;dbname=test', 'root', 'root');
  $sql = 'select * from articles';
  $query = $db->prepare($sql);
  $query->execute();
  $lists = $query->fetchAll();
  print_r($lists);
} catch (Exception $e) {
  echo $e->getMessage();
}
Copier après la connexion

Instanciation

require './vendor/autoload.php';
use Elasticsearch\ClientBuilder;
$client = ClientBuilder::create()->build();
Copier après la connexion

Explication du nom : L'index est équivalent àMySQL Les tables et les documents dans sont équivalents aux enregistrements de ligne dans MySQL La nature dynamique de

elasticsearch crée automatiquement un index lorsque le premier document est ajouté. . et quelques paramètres par défaut.

Ajouter un document à l'index

foreach ($lists as $row) {
  $params = [
    'body' => [
      'id' => $row['id'],
      'title' => $row['title'],
      'content' => $row['content']
    ],
    'id' => 'article_' . $row['id'],
    'index' => 'articles_index',
    'type' => 'articles_type'
  ];
  $client->index($params);
}
Copier après la connexion

Obtenir le document de l'index

$params = [
  'index' => 'articles_index',
  'type' => 'articles_type',
  'id' => 'articles_1'
];
$res = $client->get($params);
print_r($res);
Copier après la connexion

Supprimer le document de l'index

$params = [
  'index' => 'articles_index',
  'type' => 'articles_type',
  'id' => 'articles_1'
];
$res = $client->delete($params);
print_r($res);
Copier après la connexion

Supprimer l'index

$params = [
    'index' => 'articles_index'
];
$res = $client->indices()->delete($params);
print_r($res);
Copier après la connexion

Créer un index

$params['index'] = 'articles_index';  
$params['body']['settings']['number_of_shards'] = 2;  
$params['body']['settings']['number_of_replicas'] = 0;  
$client->indices()->create($params);
Copier après la connexion

Rechercher

$params = [ 
  'index' => 'articles_index',
  'type' => 'articles_type',
];      
$params['body']['query']['match']['content'] = 'Laravel';
$res = $client->search($params);
print_r($res);
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
php
source:csdn.net
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal