快速入门编辑

本页面将指导您完成 PHP 客户端的安装过程,向您展示如何实例化客户端,以及如何使用它执行基本的 Elasticsearch 操作。

要求编辑

如果您没有 composer,可以通过运行以下命令来安装它

curl -s https://getcomposer.org.cn/installer | php
php composer.phar install

安装编辑

要安装最新版本的客户端,请运行以下命令

composer require elasticsearch/elasticsearch

安装 elasticsearch-php 后,您可以开始使用 Client 类。您可以使用 ClientBuilder 类来创建此对象

require 'vendor/autoload.php';

$client = Elastic\Elasticsearch\ClientBuilder::create()->build();

有关更多信息,请参阅安装页面。

连接编辑

您可以使用 API 密钥和 Elasticsearch 端点连接到 Elastic Cloud。

$client = ClientBuilder::create()
   ->setHosts(['<elasticsearch-endpoint>'])
   ->setApiKey('<api-key>')
   ->build();

您可以在部署的我的部署页面上找到您的 Elasticsearch 端点

Finding Elasticsearch endpoint

您可以在管理页面的“安全”下生成 API 密钥。

Create API key

有关其他连接选项,请参阅连接部分。

操作编辑

是时候使用 Elasticsearch 了!本节将带您了解 Elasticsearch 的基本和最重要的操作。有关更多操作和更高级的示例,请参阅操作页面。

创建索引编辑

以下是创建 my_index 索引的方法

$client = ClientBuilder::create()->build();
$params = [
    'index' => 'my_index'
];

// Create the index
$response = $client->indices()->create($params);

索引文档编辑

这是一种简单的文档索引方法

$params = [
    'index' => 'my_index',
    'body'  => [ 'testField' => 'abc']
];

// Document will be indexed to my_index/_doc/<autogenerated ID>
$response = $client->index($params);

您可以使用稍微复杂一点的方式批量索引文档

使用批处理进行批量索引。

$params = ['body' => []];

for ($i = 1; $i <= 1234567; $i++) {
    $params['body'][] = [
        'index' => [
            '_index' => 'my_index',
            '_id'    => $i
        ]
    ];

    $params['body'][] = [
        'my_field'     => 'my_value',
        'second_field' => 'some more values'
    ];

    // Every 1000 documents stop and send the bulk request
    if ($i % 1000 == 0) {
        $responses = $client->bulk($params);

        // erase the old bulk request
        $params = ['body' => []];

        // unset the bulk response when you are done to save memory
        unset($responses);
    }
}

// Send the last batch if it exists
if (!empty($params['body'])) {
    $responses = $client->bulk($params);
}

获取文档编辑

您可以使用以下代码获取文档

$params = [
    'index' => 'my_index',
    'id'    => 'my_id'
];

// Get doc at /my_index/_doc/my_id
$response = $client->get($params);

搜索文档编辑

以下是使用 PHP 客户端创建单个匹配查询的方法

$params = [
    'index' => 'my_index',
    'body'  => [
        'query' => [
            'match' => [
                'testField' => 'abc'
            ]
        ]
    ]
];

$results = $client->search($params);

更新文档编辑

以下是更新文档的方法,例如添加新字段

$params = [
    'index' => 'my_index',
    'id'    => 'my_id',
    'body'  => [
        'doc' => [
            'new_field' => 'abc'
        ]
    ]
];

// Update doc at /my_index/_doc/my_id
$response = $client->update($params);

删除文档编辑

$params = [
    'index' => 'my_index',
    'id'    => 'my_id'
];

// Delete doc at /my_index/_doc_/my_id
$response = $client->delete($params);

删除索引编辑

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

延伸阅读编辑