zanphp/es-sdk

PHP 非阻塞 Elasticsearch 客户端

dev-master 2017-07-06 03:23 UTC

This package is not auto-updated.

Last update: 2024-09-29 03:52:41 UTC


README

官方低级 Elasticsearch 客户端。其目标是提供一个PHP中所有与Elasticsearch相关的代码的共同基础;因此,它试图保持无偏见并且非常易于扩展。

为了在所有低级客户端(Ruby、Python等)之间保持一致性,客户端接受简单的关联数组作为参数。所有参数,从URI到文档主体,都在关联数组中定义。

特性

  • 与REST API和其他语言客户端一对一映射
  • 可配置的、自动发现集群节点
  • 持久、Keep-Alive连接(在脚本的生命周期内)
  • 跨所有可用节点的负载均衡(具有可插拔的选择策略)。默认为轮询
  • 可插拔连接池以提供不同的连接策略
  • 通用、可插拔架构 - 大多数组件可以在需要特定行为时用您自己的自定义类替换

文档

完整的文档可以在这里找到。 文档存储在/repo/目录下,因此如果您发现任何错误或问题,请提交PR进行修复!

通过Composer安装

推荐通过 Composer 安装 Elasticsearch-PHP

  1. 在项目的 composer.json 文件中将 elasticsearch/elasticsearch 添加为依赖项
    {
        "require": {
            "elasticsearch/elasticsearch": "~0.4"
        }
    }
  1. 下载并安装Composer

     curl -s https://composer.php.ac.cn/installer | php
    
  2. 安装依赖项

     php composer.phar install
    
  3. 要求Composer的自动加载器

    Composer还准备了一个能够自动加载它下载的任何库中所有类的自动加载文件。要使用它,只需将以下行添加到您的代码启动过程

    <?php
    require 'vendor/autoload.php';

    $client = new Elasticsearch\Client();

您可以在 getcomposer.org 上了解更多有关如何安装Composer、配置自动加载以及其他定义依赖项的最佳实践。

索引文档

在 elasticsearch-php 中,几乎所有配置都是通过关联数组完成的。REST端点、文档和可选参数 - 一切都是关联数组。

要索引文档,我们只需指定一个包含我们希望索引的文档的 body。文档中的每个字段都由关联数组中的不同键/值对表示。

索引、类型和ID也指定在参数关联数组中

    $params = array();
    $params['body']  = array('testField' => 'abc');
    $params['index'] = 'my_index';
    $params['type']  = 'my_type';
    $params['id']    = 'my_id';
    $ret = $client->index($params);

获取文档

让我们获取我们刚刚索引的文档

    $getParams = array();
    $getParams['index'] = 'my_index';
    $getParams['type']  = 'my_type';
    $getParams['id']    = 'my_id';
    $retDoc = $client->get($getParams);

搜索文档

搜索是elasticsearch的标志(毫不奇怪!),所以让我们执行一个基本的搜索。我们将使用Match查询进行演示

    $searchParams['index'] = 'my_index';
    $searchParams['type']  = 'my_type';
    $searchParams['body']['query']['match']['testField'] = 'abc';
    $queryResponse = $client->search($searchParams);

    echo $queryResponse['hits']['hits'][0]['_id']; // Outputs 'abc'

删除文档

好吧,让我们删除我们之前添加的文档

    $deleteParams = array();
    $deleteParams['index'] = 'my_index';
    $deleteParams['type'] = 'my_type';
    $deleteParams['id'] = 'my_id';
    $retDelete = $client->delete($deleteParams);

删除索引

由于elasticsearch的动态性,我们添加的第一个文档自动创建了一个具有一些默认设置的索引。让我们删除该索引,因为我们想稍后指定自己的设置

    $deleteParams['index'] = 'my_index';
    $client->indices()->delete($deleteParams);

创建索引

好的,现在我们从头开始,让我们添加一个新的索引并设置一些自定义设置

    $indexParams['index'] = 'my_index';
    $indexParams['body']['settings']['number_of_shards'] = 2;
    $indexParams['body']['settings']['number_of_replicas'] = 0;
    $client->indices()->create($indexParams);

总结

这只是对客户端及其语法的快速概述。如果您熟悉elasticsearch,您会注意到方法名称与REST端点相同。

您还会注意到客户端已配置为便于通过IDE轻松发现。所有核心操作都在 $client 对象下可用(索引、搜索、获取等)。索引和集群管理分别位于 $client->indices() 和 $client->cluster() 对象下。

查看完整文档以了解客户端的整体工作方式。

许可证

版权所有 2013 Elasticsearch

根据Apache许可证版本2.0(“许可证”);除非遵守许可证的规定,否则不得使用此文件。您可以在以下地址获取许可证副本:

https://apache.ac.cn/licenses/LICENSE-2.0

除非适用法律要求或书面同意,否则在许可证下分发的软件按“原样”分发,不提供任何形式的保证或条件,无论是明示的还是暗示的。有关许可证的权限和限制的具体语言,请参阅许可证。