首页
Linux教程
MongoDB教程
FTP教程
Apache教程
Nginx
jQuery
Redis
MySQL
PostgreSQL教程
PHP教程
Elasticsearch

Elasticsearch

目录
搭建运行环境

Elasticsearch官方的PHP客户端


概述

这是 Elasticsearch 官方的 PHP 客户端。我们把 Elasticsearch-PHP 设计成低级客户端,使用时不会偏离 REST API 的用法。

客户端所有方法几乎都与 REST API 对应,而且也与其他编程语言的客户端(如 ruby, python 等)方法结构相似。我们希望这种对应方式可以方便开发者更加容易上手客户端,且以最小的代价快速从一种编程语言转换到另一种编程语言。

本客户端设计得很"灵活"。虽然有一些通用的细节添加进了客户端(集群状态嗅探,轮询调度请求等),但总的来说它是十分基础的。这也是有意这样设计。我们只是设计了基础方法,更多的复杂类库可以在此衍生出来。

安装

Elasticsearch-php 的安装需要满足以下 4 个需求:

  1. PHP 7.0.0 或更高版本
  2. Composer
  3. ext-curl:PHP 的 Libcurl 扩展
  4. 原生 JSON 扩展 (ext-json) 1.3.7或更高版本

其余的依赖会由 Composer 自动安装。Composer 是一个 PHP 包管理和依赖管理工具,使用 Composer 安装 elasticsearch-php 非常简单。

一、PHP7安装curl扩展

    PHP要访问Elasticsearch,必须安装curl扩展。

    phpinfo();如果你的PHP环境出现上图curl扩展,就表示你的PHP可以访问Elasticsearch。如果没有出现,请按以下步骤安装。

    直接从php源码包中,使用root权限安装。

    找到原先安装PHP的源码包文件,如果已经删掉,就需要重新下载原来版本的源码包并解压。

    [root@zw2 /root]#cd /usr/local/src/php-7.4.2/ext/curl

    实际是要追加PHP编译时的项目,要重新生成一个"configure"文件,通过"phpize"文件来生成"configure"文件。

    查找一下可执行文件"phpize"位置在哪。

    [root@zw2 /usr/local/src/php-7.4.2/ext/curl]#find / -name phpize

    红框位置圈的就是我们要找的文件"phpize"的位置。

    在当前目录"/usr/local/src/php-7.4.2/ext/curl"下执行以下命令。

    [root@zw2 /usr/local/src/php-7.4.2/ext/curl]#/usr/local/php/bin/phpize

    经过以上命令,就在当前目录下生成了文件"configure"。

    用文件"php-config"追加PHP的配置配置,php-config一般和phpize在同级目录。

    [root@zw2 /usr/local/src/php-7.4.2/ext/curl]#./configure --with-php-config=/usr/local/php/bin/php-config

    编译、安装

    [root@zw2 /usr/local/src/php-7.4.2/ext/curl]#make

    [root@zw2 /usr/local/src/php-7.4.2/ext/curl]#make install

    Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-zts-20190902

    上面提示我们要的扩展文件"curl.so"已经生成在目录/usr/local/php/lib/php/extensions/no-debug-zts-20190902/

    [root@zw2 /usr/local/src/php-7.4.2/ext/curl]#cd /usr/local/php/lib/php/extensions/no-debug-zts-20190902

    [root@zw2 /usr/local/php/lib/php/extensions/no-debug-zts-20190902]#ls

    将扩展文件"curl.so"加入到php.ini文件中。

    重启PHP,查看phpinfo()。

    这样PHP就可以访问Elasticsearch了.

二、Composer 安装

    假设我们的例子在目录"/zwweb/temp1.12cc.com"下进行。

    1.在 composer.json 文件中增加 elasticsearch-php。如果你是新建项目,那么把以下的代码复制粘贴到 composer.json 就行了。如果是在现有项目中添加 elasticsearch-php,那么把 elasticsearch-php 添加到其它的包名后面即可:

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

    2.使用 composer 安装客户端:首先要用下面第一个命令来安装 composer.phar ,然后使用第二个命令来执行安装程序。composer 会自动下载所有的依赖,把下载的依赖存储在当前目录 vendor/ 目录下,并且创建一个 autoloader:

    [root@zw2 /zwweb/temp1.12cc.com]#curl -s http://getcomposer.org/installer | php

    由于网站http://getcomposer.org/installer访问不稳定,期间可能会失败,多试几次就可以了。

    成功后,就会生成文件"composer.phar"。

    [root@zw2 /zwweb/temp1.12cc.com]#php composer.phar install --no-dev

    关于 Composer 的详情请查看​Composer 中文网

    3.最后在测试文件es.php里加载 autoload.php。如果你现有项目是用 Composer 安装的,那么 autoload.php 也许已经在某处加载了,你就不必再加载。最后实例化一个客户端对象:

    require 'vendor/autoload.php';
    use Elasticsearch\ClientBuilder;
    $hosts = ['s1.12cc.com:9200','s3.12cc.com:9200'];
    $client = ClientBuilder::create()->setHosts($hosts)->build();
    $params = [
    'index' => 'jl',
    'type' => 'test',
    'id' => 1
    ];
    $response = $client->get($params);
    print_r($response);

    客户端对象的实例化主要是使用静态方法 create() ,这里会创建一个 ClientBuilder 对象,主要是用来设置一些自定义配置。如果你配置完了,你就可以调用 build() 方法来创建一个 Client 对象。我们会在配置一节中详细说明配置方法。

    --no-dev标志

    你会注意到安装命令行指定了 --no-dev 。这里是防止 Composer 安装各种测试依赖包和开发依赖包。对于普通用户没有必要安装测试包。特别是开发依赖包包含了 Elasticsearch 的一套源码,这是为了以 REST API 的方式进行测试。然而这对于非开发者来说太大了,因此要使用 --no-dev。

    如果你想帮助完善这个客户端类库,那就删掉 --no-dev 标志来进行测试吧。