Maison  >  Article  >  cadre php  >  À propos de la posture correcte d'utilisation de es dans Laravel

À propos de la posture correcte d'utilisation de es dans Laravel

藏色散人
藏色散人avant
2020-09-19 09:13:045640parcourir

La colonne tutorielle suivante de Laravel vous présentera la bonne posture d'utilisation de es dans laravel. J'espère qu'elle sera utile aux amis dans le besoin !

À propos de la posture correcte d'utilisation de es dans Laravel

Introduction à Elasticsearch

La couche inférieure d'Elastic est la bibliothèque open source Lucene. Cependant, vous ne pouvez pas utiliser Lucene directement, vous devez écrire votre propre code pour appeler son interface. Elastic est un package de Lucene et fournit une interface d'opération d'API REST qui peut être utilisée immédiatement.

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

Extrait du cours " Solution de concurrence de données de niveau dix millions (théorique + pratique)》

ES et Mysql

Les concepts d'ES sont analogue à Mysql Comme le montre la figure ci-dessous :
laravel 使用 es 的正确姿势

Index inversé

Avant de parler d'index inversé, commençons par parler de ce qu'est un indice positif. Indice de classement. L'index avant est également appelé « index avant », qui sert de base à la création d'un index inversé.
laravel 使用 es 的正确姿势
Comme ci-dessus, lors de la recherche des documents dans lesquels un mot-clé est contenu, tous les documents doivent être numérisés pour garantir que rien ne manque. Cela prolonge considérablement le temps de récupération et réduit l'efficacité de la récupération. A cette époque, nous avons utilisé l'index inversé, en segmentant d'abord le document en mots.
laravel 使用 es 的正确姿势
Par exemple, nous souhaitons interroger dans quels documents le mot-clé « moteur de recherche » apparaît. Tout d'abord, nous pouvons utiliser l'index inversé pour interroger les positions du document où le mot-clé apparaît en 1 et 3, puis nous pouvons interroger le contenu des documents 1 et 3 via l'index direct et renvoyer les résultats ;

Laravel utilise ES

Installation de plugins

basemkhirat/elasticsearch est une extension pour utiliser ES dans Laravel Il est très pratique à utiliser :
1) Méthode d'installation

$ composer require basemkhirat/elasticsearch

2) Publier

$ php artisan supplier:publish –provider=”BasemkhiratElasticsearchElasticsearchServiceProvider”

Configuration

De cette façon, nous l'avons installé. Voici notre configuration de connexion :

'connections' => [
    'default' => [
        'servers' => [
            [
                "host" => env("ELASTIC_HOST", "127.0.0.1"),
                "port" => env("ELASTIC_PORT", 9200),
                'user' => env('ELASTIC_USER', ''),
                'pass' => env('ELASTIC_PASS', ''),
                'scheme' => env('ELASTIC_SCHEME', 'http'),
            ]
        ],
        'index' => env('ELASTIC_INDEX', 'my_index')
    ]],

Notre configuration de cluster peut être ajoutée aux serveurs.

Méthode d'utilisation

La méthode d'utilisation de ce plug-in peut être utilisée à titre de référence à partir du constructeur de requêtes de Laravel, prenant en charge celles couramment utilisées telles que where, whereIn , whereBetween, orderBy, first, get, et prend également en charge la méthode de pagination paginate.

$documents = ES::connection(“default”)
                                                                                                                gt ;get(); # renvoie une collection de résultats

Définir le poids du champ :

ES::type("my_type")->search("hello" , function($search){
$search->boost(2)->fields([ "title" => 2, "content" => 1])

})-> get();

Nous pouvons également modifier le code source pour étendre les méthodes que nous besoin ou construire des instructions de requête natives :
$params['body'] = [
            'aggs' => [
                'all_created' => [
                    'terms' => [
                        'field' => 'element.raw',
                        'size'  => $this->_mAggsPageSize                    ],

                    'aggs' => [

                        'sum_pv' => [
                            'sum' => ['field' => 'pv'],
                        ],
                    ],
                ],
            ],
        ];

Conclusion

Le segmenteur de mots intégré d'ES n'est pas compatible avec la prise en charge de la segmentation intermédiaire. Le plus recommandé est le Segmenteur de mots IK. Il convient de noter que la version ik doit être cohérente avec la version ik. Numéro de version ES. <

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer