tp5+ElasticSearch安装及使用
------------恢复内容开始------------
环境
php 7.2
elasticsearch 6.2 下载
elasticsearch-php 6 下载
安装 elasticsearch
下载源文件,解压,重新建一个用户,将目录的所属组修改为此用户,因为 elasticsearch
无法用 root 用户启动。
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.3.tar.gztar zxvf elasticsearch-6.2.3.tar.gz
useradd elasticsearch passwd elasticsearch chown -R elasticsearch:elasticsearch elasticsearch-6.2.3 mv elasticsearch-6.2.3 /usr/local/elasticsearch-6.2.3
yum install java-1.8.0-openjdk.x86_64 //安装jdk
su elasticsearch cd /usr/local/elasticsearch-6.2.3 ./bin/elasticsearch // 启动
安装 PHP 扩展
我这里使用的是 composer
安装 elasticsearch-php
。在 composer.json
文件中加入 "elasticsearch/elasticsearch": "~6.0"
,执行 composer update
。
tp5使用实例
index/index/index
<?php namespace app\index\controller; use Elasticsearch\ClientBuilder; class Index { //配置 private $config = [ 'hosts' => ['http://127.0.0.1:9200'] ]; private $api; public function __construct() { #include(APP_PATH .'/vendor/autoload.php'); #require_once EXTEND_PATH . 'org/elasticsearch/autoload.php'; import('org.elasticsearch.autoload', EXTEND_PATH); $this->api = ClientBuilder::create()->setHosts($this->config['hosts'])->build(); } /************************************************************* /** * 索引一个文档 * 说明:索引没有被创建时会自动创建索引 */ public function addOne() { $params = []; $params['index'] = 'xiaochuan'; $params['type'] = 'cat'; $params['id'] = '20180407001'; # 不指定就是es自动分配 $params['body'] = array('name' => '小川编程'); $ret = $this->api->index($params); var_dump($ret); } /** * 索引多个文档 * 说明:索引没有被创建时会自动创建索引 */ public function addAll() { $params = []; for($i = 1; $i < 21; $i++) { $params['body'][] = [ 'index' => [ '_index' => 'test_index'.$i, '_type' => 'cat_test', '_id' => $i, ] ]; $params['body'][] = [ 'name' => '小川编程'.$i, 'content' => '内容'.$i ]; } $ret = $this->api->bulk($params); var_dump($ret); } /** * 获取一个文档 */ public function getOne() { $params = []; $params['index'] = 'xiaochuan'; $params['type'] = 'cat'; $params['id'] = '20180407001'; $ret = $this->api->get($params); var_dump($ret); } /** * 搜索文档 */ public function search() { $params = []; $params['index'] = 'xiaochuan'; $params['type'] = 'cat'; $params['body']['query']['match']['name'] = '小川编程'; $ret = $this->api->search($params); var_dump($ret); } /** * 删除文档 * 说明:文档删除后,不会删除对应索引。 */ public function delete() { $params = []; $params['index'] = 'xiaochuan'; $params['type'] = 'cat'; $params['id'] = '20180407001'; $ret = $this->api->delete($params); var_dump($ret); } /************************************************************* /** * 创建索引 */ public function createIndex() { $params = []; $params['index'] = 'xiaochuan1'; $ret = $this->api->indices()->create($params); var_dump($ret); } /** * 删除索引:匹配单个 | 匹配多个 * 说明: 索引删除后,索引下的所有文档也会被删除 */ public function deleteIndex() { $params = []; $params['index'] = 'xiaochuan1'; # 删除test_index单个索引 #$params['index'] = 'test_index*'; # 删除以test_index开始的所有索引 $ret = $this->api->indices()->delete($params); var_dump($ret); } /************************************************************* /** * 设置索引配置 */ public function setIndexConfig() { $params = []; $params['index'] = 'xiaochuan'; $params['body']['index']['number_of_replicas'] = 0; $params['body']['index']['refresh_interval'] = -1; $ret = $this->api->indices()->putSettings($params); var_dump($ret); } /** * 获取索引配置 */ public function getIndexConfig() { # 单个获取条件写法 $params['index'] = 'xiaochuan'; # 多个获取条件写法 //$params['index'] = ['xiaochuan', 'test_index']; $ret = $this->api->indices()->getSettings($params); var_dump($ret); } /** * 设置索引映射? */ public function setIndexMapping() { # 设置索引和类型 $params['index'] = 'xiaochuan'; $params['type'] = 'cat'; # 向现有索引添加新类型 $myTypeMapping = array( '_source' => array( 'enabled' => true ), 'properties' => array( 'first_name' => array( 'type' => 'string', 'analyzer' => 'standard' ), 'age' => array( 'type' => 'integer' ) ) ); $params['body']['cat'] = $myTypeMapping; # 更新索引映射 $ret = $this->api->indices()->putMapping($params); var_dump($ret); } /** * 获取索引映射 */ public function getIndexMapping() { # 获取所有索引和类型的映射 $ret = $this->api->indices()->getMapping(); /* # 获取索引为:xiaochuan的映射 $params['index'] = 'xiaochuan'; $ret = $this->api->indices()->getMapping($params); # 获取类型为:cat的映射 $params['type'] = 'cat'; $ret = $this->api->indices()->getMapping($params); # 获取(索引为:xiaochuan和 类型为:cat)的映射 $params['index'] = 'xiaochuan'; $params['type'] = 'cat' $ret = $this->api->indices()->getMapping($params); # 获取索引为:xiaochuan和test_index的映射 $params['index'] = ['xiaochuan', 'test_index']; $ret = $this->api->indices()->getMapping($params); */ var_dump($ret); } }
------------恢复内容结束------------