Maison  >  Article  >  développement back-end  >  Comment utiliser Elasticsearch en PHP

Comment utiliser Elasticsearch en PHP

不言
不言original
2018-07-07 11:50:208943parcourir

Cet article présente principalement la méthode d'utilisation d'Elasticsearch en PHP. Il a une certaine valeur de référence. Maintenant, je le partage avec vous. Les amis dans le besoin peuvent s'y référer

Recommandations 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éorie + combat pratique)"

L'utilisation d'Elasticsearch en PHP

composer require elasticsearch/elasticsearch

chargera automatiquement la version appropriée ! Mon php est 5.6, il chargera automatiquement la version 5.3 elasticsearch !

Using version ^5.3 for elasticsearch/elasticsearch
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 4 installs, 0 updates, 0 removals
  - Installing react/promise (v2.7.0): Downloading (100%)         
  - Installing guzzlehttp/streams (3.0.0): Downloading (100%)         
  - Installing guzzlehttp/ringphp (1.1.0): Downloading (100%)         
  - Installing elasticsearch/elasticsearch (v5.3.2): Downloading (100%)         
Writing lock file
Generating autoload files

Utilisation simple

<?php

class MyElasticSearch
{
    private $es;
    // 构造函数
    public function __construct()
    {
        include(&#39;../vendor/autoload.php&#39;);
        $params = array(
            &#39;127.0.0.1:9200&#39;
        );
        $this->es = \Elasticsearch\ClientBuilder::create()->setHosts($params)->build();
    }

    public function search() {
        $params = [
            &#39;index&#39; => &#39;megacorp&#39;,
            &#39;type&#39; => &#39;employee&#39;,
            &#39;body&#39; => [
                &#39;query&#39; => [
                    &#39;constant_score&#39; => [ //非评分模式执行
                        &#39;filter&#39; => [ //过滤器,不会计算相关度,速度快
                            &#39;term&#39; => [ //精确查找,不支持多个条件
                                &#39;about&#39; => &#39;谭&#39;
                            ]
                        ]

                    ]
                ]
            ]
        ];

        $res = $this->es->search($params);

        print_r($res);
    }
}
<?php
require "./MyElasticSearch.php";

$es = new MyElasticSearch();

$es->search();

Résultats d'exécution

Array
(
    [took] => 2
    [timed_out] => 
    [_shards] => Array
        (
            [total] => 5
            [successful] => 5
            [skipped] => 0
            [failed] => 0
        )

    [hits] => Array
        (
            [total] => 1
            [max_score] => 1
            [hits] => Array
                (
                    [0] => Array
                        (
                            [_index] => megacorp
                            [_type] => employee
                            [_id] => 3
                            [_score] => 1
                            [_source] => Array
                                (
                                    [first_name] => 李
                                    [last_name] => 四
                                    [age] => 24
                                    [about] => 一个PHP程序员,热爱编程,谭康很帅,充满激情。
                                    [interests] => Array
                                        (
                                            [0] => 英雄联盟
                                        )

                                )

                        )

                )

        )

)

Voici quelques exemples officiels :

Initialisation

require &#39;../vendor/autoload.php&#39;;
use Elasticsearch\ClientBuilder;
$client = ClientBuilder::create()->build();

Ajouter une configuration

$hosts = [
    &#39;127.0.01:9200&#39;,         // IP + Port
];

$client = ClientBuilder::create()           // Instantiate a new ClientBuilder
->setHosts($hosts)      // Set the hosts
->build();              // Build the client object

ou

$hosts = [
    &#39;127.0.01:9200&#39;,         // IP + Port
];

$clientBuilder = ClientBuilder::create();   // Instantiate a new ClientBuilder
$clientBuilder->setHosts($hosts);           // Set the hosts
$client = $clientBuilder->build();          // Build the client object

Insérer un document

// Index 一个文档
$params = [
    &#39;index&#39; => &#39;my_index&#39;,
    &#39;type&#39; => &#39;my_type&#39;,
    &#39;id&#39; => &#39;my_id&#39;,
    &#39;body&#39; => [&#39;testField&#39; => &#39;abc&#39;]
];

$response = $client->index($params);
print_r($response);

Obtenir un document

$params = [
    &#39;index&#39; => &#39;my_index&#39;,
    &#39;type&#39; => &#39;my_type&#39;,
    &#39;id&#39; => &#39;my_id&#39;
];

$response = $client->get($params);
print_r($response);

Interroger un document

$params = [
    &#39;index&#39; => &#39;my_index&#39;,
    &#39;type&#39; => &#39;my_type&#39;,
    &#39;body&#39; => [
        &#39;query&#39; => [
            &#39;match&#39; => [
                &#39;testField&#39; => &#39;abc&#39;
            ]
        ]
    ]
];

$response = $client->search($params);
print_r($response);

Supprimer un document

$params = [
    &#39;index&#39; => &#39;my_index&#39;,
    &#39;type&#39; => &#39;my_type&#39;,
    &#39;id&#39; => &#39;my_id&#39;
];

$response = $client->delete($params);
print_r($response);

Les résultats sont les suivants

Array
(
    [_index] => my_index
    [_type] => my_type
    [_id] => my_id
    [_version] => 3
    [result] => deleted
    [_shards] => Array
        (
            [total] => 2
            [successful] => 1
            [failed] => 0
        )

    [_seq_no] => 2
    [_primary_term] => 1
)

Supprimer un index

$deleteParams = [
    &#39;index&#39; => &#39;my_index&#39;
];
$response = $client->indices()->delete($deleteParams);
print_r($response);

Créez un index

$params = [
    &#39;index&#39; => &#39;my_index&#39;,
    &#39;body&#39; => [
        &#39;settings&#39; => [
            &#39;number_of_shards&#39; => 2,
            &#39;number_of_replicas&#39; => 0
        ]
    ]
];

$response = $client->indices()->create($params);
print_r($response);

Ce qui précède est l'intégralité du contenu de cet article. J'espère qu'il sera utile à l'apprentissage de chacun. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois !

Recommandations associées :

Pile de fondation de structure de données PHP

Méthodes PHP et commentaires sur les paramètres pour faire fonctionner Beanstalkd

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:
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