当前位置:首页 > PHP

elasticsearch php实现

2026-01-29 13:53:45PHP

安装 Elasticsearch PHP 客户端

使用 Composer 安装官方提供的 Elasticsearch PHP 客户端库。在项目目录下运行以下命令:

composer require elasticsearch/elasticsearch

建立客户端连接

引入自动加载文件并创建 Elasticsearch 客户端实例:

require 'vendor/autoload.php';

$client = Elasticsearch\ClientBuilder::create()
    ->setHosts(['localhost:9200']) // 设置ES服务器地址
    ->build();

索引文档操作

创建新索引并添加文档:

$params = [
    'index' => 'my_index',
    'id'    => '1',
    'body'  => ['title' => '测试文档', 'content' => '这是PHP插入的内容']
];

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

搜索文档

执行基本搜索查询:

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

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

更新文档

部分更新现有文档:

$params = [
    'index' => 'my_index',
    'id'    => '1',
    'body'  => [
        'doc' => ['content' => '更新后的内容']
    ]
];

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

删除文档

删除指定文档:

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

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

批量操作

执行批量索引操作提高效率:

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

$params['body'][] = [
    'index' => [
        '_index' => 'my_index',
        '_id' => '2'
    ]
];
$params['body'][] = [
    'title' => '批量文档1',
    'content' => '批量内容1'
];

$params['body'][] = [
    'index' => [
        '_index' => 'my_index',
        '_id' => '3'
    ]
];
$params['body'][] = [
    'title' => '批量文档2',
    'content' => '批量内容2'
];

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

高级搜索功能

使用复合查询和聚合:

$params = [
    'index' => 'my_index',
    'body' => [
        'query' => [
            'bool' => [
                'must' => [
                    ['match' => ['title' => '测试']],
                    ['range' => ['created_at' => ['gte' => 'now-1d/d']]]
                ]
            ]
        ],
        'aggs' => [
            'content_terms' => ['terms' => ['field' => 'content.keyword']]
        ]
    ]
];

错误处理

添加异常处理机制:

try {
    $response = $client->search($params);
} catch (Elasticsearch\Common\Exceptions\Missing404Exception $e) {
    echo "索引不存在: ".$e->getMessage();
} catch (Exception $e) {
    echo "发生错误: ".$e->getMessage();
}

性能调优

配置客户端连接参数:

$client = Elasticsearch\ClientBuilder::create()
    ->setHosts(['127.0.0.1:9200'])
    ->setRetries(2) // 重试次数
    ->setConnectionPool('\Elasticsearch\ConnectionPool\SimpleConnectionPool')
    ->setSelector('\Elasticsearch\ConnectionPool\Selectors\RoundRobinSelector')
    ->build();

elasticsearch php实现

分享给朋友:

相关文章

php实现分页

php实现分页

PHP实现分页的基本方法 使用LIMIT和OFFSET进行数据库查询分页。通过计算当前页码和每页显示数量,动态生成SQL语句。 $page = isset($_GET['page']) ? (in…

php实现树

php实现树

PHP实现树结构的方法 在PHP中实现树结构通常可以通过递归或迭代的方式完成。以下是几种常见的实现方法: 递归实现树结构 递归是处理树结构的自然方式,尤其适用于具有未知深度的树。 class…

php实现递归

php实现递归

递归的基本概念 递归是一种函数调用自身的技术,适用于解决可以分解为相同子问题的问题。在PHP中,递归需要明确的终止条件(基线条件),否则会导致无限循环。 递归实现阶乘 阶乘是经典的递归案例,n!…

php实现定时任务

php实现定时任务

PHP 实现定时任务的几种方法 在 PHP 中实现定时任务可以通过多种方式完成,具体选择取决于项目需求和服务器环境。以下是常见的实现方法: 使用 Cron 任务 Cron 是 Linux 系统中常用…

php实现注册

php实现注册

注册功能实现步骤 数据库准备 创建用户表,包含字段如id、username、password、email等。示例SQL: CREATE TABLE users ( id INT AUTO_…

php 实现登录

php 实现登录

PHP 登录功能实现 使用 PHP 实现登录功能通常需要结合数据库验证和会话管理。以下是一个基本的登录实现流程: 数据库准备 创建用户表存储用户名和密码(建议使用哈希加密): CREATE TAB…