Elasticsearch PHP版
简介:ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。简称:ES。用途: 用于分布式全文检索
- java环境安装
参考地址:https://www.runoob.com/java/java-environment-setup.html
a. 下载java开发工具包JDK,下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html
b. 配置环境变量
在 "系统变量" 中设置 3 项属性,JAVA_HOME、PATH、CLASSPATH(大小写无所谓),若已存在则点击"编辑",不存在则点击"新建"。
// 注意:如果使用 1.5 以上版本的 JDK,不用设置 CLASSPATH 环境变量,也可以正常编译和运行 Java 程序。
变量设置参数如下:
变量名:JAVA_HOME
变量值:C:\Program Files (x86)\Java\jdk1.8.0_91 // 要根据自己的实际路径配置
变量名:CLASSPATH
变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar; //记得前面有个"."
变量名:Path
变量值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
c. 测试JDK是否安装成功
1、"开始"->"运行",键入"cmd";
2、键入命令: java -version、java、javac 几个命令,出现以下信息,说明环境变量配置成功;
- 搭建Elasticsearch环境
Elastic官网:https://www.elastic.co/cn/
a.下载安装包:下载地址:https://www.elastic.co/cn/downloads/elasticsearch
b. 解压,无需安装
c. 进入elasticsearch/bin目录,可以看到下面的执行文件:elasticsearch.bat
d. 检测:打开浏览器,访问http://localhost:9200,看看是否真的启动了。
- 首先第一步创建一个composer.json文件(数据如下),composer install 命令进行安装
{
"require":{
"elasticsearch/elasticsearch" : "~1.2"
}
}
- 创建一个检索类:ElasticTest.php
<?php
class ElasticTest
{
private $es;
private $db;
// 构造函数
public function __construct()
{
include('./vendor/autoload.php');
$params = array(
'127.0.0.1:9200'
);
$this->es = \Elasticsearch\ClientBuilder::create()->setHosts($params)->build();
// 连接数据库
$this->db = new PDO('mysql:dbhost=127.0.0.1;dbname=test','root','root');
}
// 基本用法(仅供学习)
public function test() {
// 索引一个文档
$params = [
'index' => 'my_index',
'type' => 'my_type',
'id' => 'my_id',
'body' => ['testField' => 'abc']
];
$response = $this->es->index($params);
print_r($response);exit;
// 获取一个文档
$params = [
'index' => 'my_index',
'type' => 'my_type',
'id' => 'my_id'
];
$response = $this->es->get($params);
print_r($response);
// 搜索一个文档
$params = [
'index' => 'my_index',
'type' => 'my_type',
'body' => [
'query' => [
'match' => [
'testField' => 'abc'
]
]
]
];
$response = $this->es->search($params);
print_r($response);
// 删除一个文档
$params = [
'index' => 'my_index',
'type' => 'my_type',
'id' => 'my_id'
];
$response = $this->es->delete($params);
print_r($response);
// 删除一个索引
$deleteParams = [
'index' => 'my_index'
];
$response = $this->es->indices()->delete($deleteParams);
print_r($response);
// 创建一个索引
$params = [
'index' => 'my_index',
'body' => [
'settings' => [
'number_of_shards' => 2,
'number_of_replicas' => 0
]
]
];
$response = $this->es->indices()->create($params);
print_r($response);
}
// 创建索引
public function create_index() {
// 数据
$sql = "select * from product";
$data = $this->db->query($sql)->fetchAll();
$params = array();
$params['index'] = 'emp_index';
$this->es->indices()->delete($params);
$dataCount = count($data);
for($i=0;$i<$dataCount;$i++){
$params = array();
$params['body'] = array(
'id' => $data[$i]['id'],
'product_name' => $data[$i]['product_name'],
'introduction' => $data[$i]['introduction'],
'sale_price' => $data[$i]['sale_price'],
'market_price' => $data[$i]['market_price'],
'cost_price' => $data[$i]['cost_price'],
'stock_count' => $data[$i]['stock_count']
);
$params['index'] = 'emp_index';
$params['type'] = 'emp_type';
$this->es->index($params);
}
echo 'create index done!';
}
// 检索
public function search() {
//Elastic search php client
$params = array();
$params['index'] = 'emp_index';
$params['type'] = 'emp_type';
$params['body']['query']['match']['product_name'] = 'test';
// $params['body']['sort'] = array('stock_count'=>array('order'=>'desc'));
$params['size'] = 3;
$params['from'] = 1;
$data = $this->es->search($params);
return $data;
}
}
- 调用执行测试:test.php
<?php
require "./ElasticTest.php";
// 实例化全文检索类
$es = new ElasticTest();
// 创建索引
$es->create_index();
// 检索数据
$data = $es->search();
echo json_encode($data);
版权声明:本文为cc_echo原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。