Elastica 是一个用于与 Elasticsearch 进行交互的 PHP 客户端库。它提供了一种方便的方式来构建和执行对 Elasticsearch 的查询。Elastica 是基于 PHP 的,因此适用于需要在 PHP 应用程序中使用 Elasticsearch 的开发者。

Elastica 的主要功能

  1. 索引管理:可以创建、删除和管理 Elasticsearch 索引。
  2. 文档管理:支持添加、更新、删除和获取文档。
  3. 查询构建:提供了一套丰富的 API 来构建复杂的查询。
  4. 聚合:支持 Elasticsearch 的聚合功能,用于数据分析。
  5. 异步请求:支持异步请求以提高性能。

安装 Elastica

要在你的 PHP 项目中使用 Elastica,可以通过 Composer 安装:

composer require ruflin/elastica

使用示例

以下是一些基本的使用示例,展示如何使用 Elastica 与 Elasticsearch 进行交互。

1. 创建客户端

require 'vendor/autoload.php';

use Elastica\Client;

// 创建一个 Elastica 客户端
$client = new Client([
    'host' => 'localhost',
    'port' => 9200,
]);

2. 创建索引

use Elastica\Index;

// 创建一个新的索引
$index = $client->getIndex('my_index');
$index->create([], true);

3. 添加文档

use Elastica\Document;

// 创建一个文档
$doc = new Document(1, ['name' => 'John Doe', 'age' => 30]);

// 将文档添加到索引
$index->addDocument($doc);

// 刷新索引以确保文档可用
$index->refresh();

4. 搜索文档

use Elastica\Query;

// 创建一个简单的查询
$query = new Query();
$query->setQuery(new \Elastica\Query\Match('name', 'John'));

// 执行搜索
$results = $index->search($query);

// 输出结果
foreach ($results as $result) {
    echo $result->getId() . ': ' . $result->getSource()['name'] . "\n";
}

5. 更新文档

// 更新文档
$doc = new Document(1, ['name' => 'John Smith', 'age' => 31]);
$index->addDocument($doc);
$index->refresh();

6. 删除文档

// 删除文档
$index->deleteById(1);
$index->refresh();

其他功能

  • 批量操作:Elastica 支持批量添加、更新和删除文档。
  • 异步请求:可以使用异步请求来提高性能,特别是在处理大量数据时。
  • 聚合和分析:支持 Elasticsearch 的聚合功能,可以用于复杂的数据分析。

参考文档