当前位置:首页 > PHP

elasticsearch php实现

2026-02-14 11:57:35PHP

使用 PHP 实现 Elasticsearch

Elasticsearch 是一个分布式搜索和分析引擎,PHP 可以通过官方客户端库与 Elasticsearch 交互。以下是实现方法:

安装 Elasticsearch PHP 客户端

通过 Composer 安装官方客户端库:

composer require elasticsearch/elasticsearch

连接 Elasticsearch 服务

创建客户端实例并连接到 Elasticsearch 服务:

require 'vendor/autoload.php';

$client = Elasticsearch\ClientBuilder::create()
    ->setHosts(['localhost:9200'])
    ->build();

索引文档

将数据存入 Elasticsearch 索引:

$params = [
    'index' => 'my_index',
    'id'    => '1',
    'body'  => ['title' => 'Test document', 'content' => 'This is a test']
];

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

搜索文档

执行搜索查询并获取结果:

$params = [
    'index' => 'my_index',
    'body'  => [
        'query' => [
            'match' => ['title' => 'test']
        ]
    ]
];

$response = $client->search($params);
print_r($response['hits']['hits']);

更新文档

更新现有文档内容:

$params = [
    'index' => 'my_index',
    'id'    => '1',
    'body'  => [
        'doc' => ['content' => 'Updated content']
    ]
];

$response = $client->update($params);

删除文档

elasticsearch php实现

从索引中移除文档:

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

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

批量操作

执行批量索引或删除操作:

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

$params['body'][] = [
    'index' => [
        '_index' => 'my_index',
        '_id' => '2'
    ]
];
$params['body'][] = [
    'title' => 'Another document',
    'content' => 'Batch operation test'
];

$response = $client->bulk($params);

处理结果

检查操作是否成功并处理返回数据:

if ($response['_shards']['successful'] >= 1) {
    echo "Operation succeeded";
} else {
    echo "Operation failed";
}

异常处理

elasticsearch php实现

捕获并处理可能出现的异常:

try {
    $response = $client->search($params);
} catch (Elasticsearch\Common\Exceptions\Missing404Exception $e) {
    echo "Document not found";
} catch (Exception $e) {
    echo "Error: " . $e->getMessage();
}

高级查询

使用更复杂的查询条件:

$params = [
    'index' => 'my_index',
    'body' => [
        'query' => [
            'bool' => [
                'must' => [
                    ['match' => ['title' => 'test']],
                    ['range' => ['created_at' => ['gte' => '2023-01-01']]]
                ]
            ]
        ]
    ]
];

聚合查询

执行数据分析聚合:

$params = [
    'index' => 'my_index',
    'body' => [
        'aggs' => [
            'popular_terms' => [
                'terms' => ['field' => 'title.keyword']
            ]
        ]
    ]
];

索引管理

创建和管理索引:

$params = [
    'index' => 'new_index',
    'body' => [
        'settings' => [
            'number_of_shards' => 2,
            'number_of_replicas' => 1
        ]
    ]
];

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

以上代码示例展示了 PHP 与 Elasticsearch 交互的基本方法,包括 CRUD 操作、搜索、批量处理和索引管理。根据实际需求可以扩展更多功能。

分享给朋友:

相关文章

php实现websocket

php实现websocket

PHP 实现 WebSocket WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。PHP 可以通过多种方式实现 WebSocket 功能,以下是几种常见的方法: 使用 Ratc…

php验证码的实现

php验证码的实现

PHP 验证码实现方法 使用 GD 库生成基础验证码 创建画布并生成随机字符串作为验证码内容: session_start(); $width = 120; $height = 40; $image…

php 实现文件下载

php 实现文件下载

实现文件下载的基本方法 使用 PHP 实现文件下载的核心是通过设置 HTTP 头部信息,强制浏览器将文件作为附件下载而非直接显示。以下是一个基础实现示例: $file_path = '/path/t…

php mvc 实现

php mvc 实现

PHP MVC 实现方法 MVC(Model-View-Controller)是一种设计模式,用于分离应用程序的逻辑、数据和界面。以下是实现PHP MVC框架的关键步骤。 目录结构 创建以下目录结构…

php实现推送消息推送消息

php实现推送消息推送消息

PHP 实现消息推送的方法 使用 WebSocket 实现实时推送 WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议,适合实现实时消息推送。 安装 Ratchet 库(WebSo…

php实现支付宝支付

php实现支付宝支付

支付宝支付集成步骤 准备工作 在开始集成支付宝支付前,确保已注册支付宝开放平台账号并完成企业实名认证。创建应用后获取APPID、应用私钥和支付宝公钥。 配置支付宝SDK 通过Composer安装支付…