您的位置:首页 > 编程语言 > PHP开发

Elasticsearch-PHP基本API使用教程

2016-12-22 16:57 579 查看
前言
Elasticsearch-PHP是PHP连接Elasticsearch库的扩展,是用PHP语言开发的,类似于PHP通过Predis操作redis库的功能。如果想详细了解Elasticsearch的话,可以下载《Elasticsearch权威指南(中文版).pdf》

下载安装Elasticsearch-PHP
下载Elasticsearch-PHP的话。你可以直接去GitHub上下载,也可以通过Composer包管理工具直接下载。这里我是通过Composer包管理工具直接下载,所以此时我们需要安装Composer,其实很简单的

,可以参考composer详细安装教程
安装好Composer之后就可以进行Elasticsearch-PHP的下载了。
首先我们在服务器根目录下创建一个elasticphp文件夹,在该文件夹中创建一个composer.json文件,内容如下:
{
"require": {
"elasticsearch/elasticsearch": "2.2.1"
}
}


然后启动Windows命令窗口cmd,进入到elasticphp目录下,运行:composer  update   命令。如下图所示:



在这个下载过程中可能需要等待一段时间,下载完后再elasticphp目录下会出现vender目录文件,如下图所示:



接下来我们可以在elasticphp目录下创建一个index.php文件,内容如下:
require 'vendor/autoload.php';    //加载自动加载文件

#如果没有设置主机地址默认为127.0.0.1:9200
$client = Elasticsearch\ClientBuilder::create()->setHosts(['localhost:9200'])->build();
var_dump($client);


如果出现如下图所示,表示连接Elasticsearch服务成功,也即Elasticsearch-PHP安装成功:




PHP通过Elasticsearch-PHP操作Elasticsearch库

PHP使用Elasticsearch-PHP的要求:

PHP的版本在5.3以上,我的版本是PHP5.5。

在php.ini中开启curl和openssl扩展

一、通过设置mapping结构创建一个索引库(相当于mysql创建一个数据库)
require 'vendor/autoload.php';    //加载自动加载文件

#如果没有设置主机地址默认为127.0.0.1:9200
$client = Elasticsearch\ClientBuilder::create()->setHosts(['localhost:9200'])->build();

/**
* 创建库索引的mapping结构
*/
$params = [
'index' => 'my_index',  //索引名(相当于mysql的数据库)
'body' => [
'settings' => [
'number_of_shards' => 5,  #分片数
],
'mappings' => [
'my_type' => [ //类型名(相当于mysql的表)
'_all' => [
'enabled' => 'false'
],
'_routing' => [
'required' => 'true'
],
'properties' => [ //文档类型设置(相当于mysql的数据类型)
'name' => [
'type' => 'string',
'store' => 'true'
],
'age' => [
'type' => 'integer'
]
]
]
]
]
];

$res = $client->indices()->create($params);   //创建库索引

二、库索引操作
require 'vendor/autoload.php';    //加载自动加载文件

#如果没有设置主机地址默认为127.0.0.1:9200
$client = Elasticsearch\ClientBuilder::create()->setHosts(['localhost:9200'])->build();

/**
* 库索引操作
*/
$params = [
'index' => 'my_index-0',
'client' => [
'ignore' => 404
]
];
$res = $client->indices()->delete($params);    //删除库索引
$res = $client->indices()->getSettings($params);//获取库索引设置信息
$res = $client->indices()->exists($params);   //检测库是否存在
$res = $client->indices()->getMapping($params);   //获取mapping信息


三、文档操作
/**
* 获取指定文档
*/
$params = [
'index' => 'my_index',
'type' => 'my_type',
'id' => '3416a75f4cea9109507cacd8e2f2aefc'
];
$res = $client->get($params);   //获取指定的文档
$res = $client->getSource($params);   //获取指定文档的sourse内容(即字段的信息)

//删除指定的文档
$res = $client->delete($params);

/**
* 更新指定文档
*/
$params = [
'index' => 'my_index',
'type' => 'my_type',
'id' => '3416a75f4cea9109507cacd8e2f2aefc',
'body' => [
'doc' => [
'age' => 150
]
]
];

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

/**
* 文档查询
*/
$params = [
'index' =>  'my_index',   //['my_index1', 'my_index2'],可以通过这种形式进行跨库查询
'type' => 'my_type',//['my_type1', 'my_type2'],
'body' => [
'query' => [
'match' => [
'age' => '24'
]
],
'from' => '0',
'size' => '200'
'sort' => [
'age' => 'desc'   //对age字段进行降序排序
]
]
];

$res = $client->search($params);


更多信息参考https://www.elastic.co/guide/en/elasticsearch/client/php-api/current/_overview.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息