PHP使用ElasticSearch

PHP中使用ElasticSearch。

composer安装elasticsearch库

composer require elasticsearch/elasticsearch

Docker部署ElasticSearch

使用Docker来部署ElasticSearch环境是十分方便的,下面的示例是单节点模式,用于开发环境。

docker run -itd --name elasticsearch --restart=always  -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.14.1

也可以把数据映射到本地,加参数

-v ~/elasticsearch_data:/usr/share/elasticsearch/data

PHP中使用

以下简称ElasticSearch为ES。

  1. 连接ES服务

<?php
use Elasticsearch\ClientBuilder;

$params = [
    'hosts' => [
        '172.17.0.3:9200'
    ],
    'retries' => 2,
    'handler' => ClientBuilder::singleHandler()
];

$client = ClientBuilder::fromConfig($params);

其中172.17.0.3是ES服务的IP,可使用docker inspect container_name查看。

  1. 插入/索引文件

索引文件即插件一个文件

$params = [
    'index' => 'content',
    'id'    => "book_{$id}",
    'body'  => $row
];

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

这里要注意的是,如果id已存在,则会被更新,而且是覆盖更新而不是局部更新。

  1. 删除文档
$params = [
    'index' => 'content',
    'id'    => "book_{$id}",
];
$response = $client->delete($params);
print_r($response);
  1. 查找文档

查找全部文档

$params = [
    'index' => 'content',
];

$response = $client->search($params);
print_r($response);

匹配相关查询

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

$response = $client->search($params);
print_r($response);

Leave a Comment

豫ICP备19001387号-1