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。
- 连接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
查看。
- 插入/索引文件
索引文件即插件一个文件
$params = [
'index' => 'content',
'id' => "book_{$id}",
'body' => $row
];
$response = $client->index($params);
print_r($response);
这里要注意的是,如果id
已存在,则会被更新,而且是覆盖更新而不是局部更新。
- 删除文档
$params = [
'index' => 'content',
'id' => "book_{$id}",
];
$response = $client->delete($params);
print_r($response);
- 查找文档
查找全部文档
$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);