- 安装java jdk
因为ES是基于JAVA的,需要先安装java环境,具体的不太清楚,不用全部都装,一个jdk就可以了(应该是java开发工具包)
下载地址,好像需要登陆
或者 链接:https://pan.baidu.[com](https://so.csdn.net/so/search?q=com&spm=1001.2101.3001.7020)/s/1CxY6Xsl7yEaSyHYWUECm3Q 提取码:on4e
选择版本跟配置,下载安装就可以了
- 配置java环境变量
新建系统环境变量 JAVA_HOME 变量值为安装地址 C:\Program Files\Java\jdk-13.0.1
编辑Pash, 在里面添加 %JAVA_HOME%\bin
- 下载 ES安装包
下载地址
或者 链接:https://pan.baidu.com/s/1J-zNhtG0y7Ico70FnuzYZg 提取码:rxt5
下载完之后,就是已经安装好的了,直接双击文件内 bin\elasticsearch.bat 就可以了,也可以用命令行进去,执行文件,等一会执行一大堆东西 有 started 基本就成功了 最后都是 INFO
访问 http://127.0.0.1:9200/?pretty 就可以看到ES的信息,已经启动了
- 下载管理ES的可视化插件,elasticsearch-head(浏览器扩展) 另一款 kibana 也是可视化插件,
GIt地址,下载zip包
或者 链接:https://pan.baidu.com/s/1570Y84yCeRbpcgbJydxP3g 提取码:9280
下载之后,解压缩, \crx\ 文件内的 es-head.crx 文件就是扩展程序,
直接将文件丢到谷歌浏览器的扩展中心内,或者指向该文件,
如果提示扩展不行,或者报错,将 es-head.crx 文件解压缩(里面一大堆文件)到当前文件夹,然后将crx 文件丢进去,或者指向就行了
当打开 http://127.0.0.1:9200/?pretty 的时候,点击扩展,就会进入可视化界面
- 还有什么安装什么node的 应该不用,咱们就是单机,复制一下
如无node须先安装下node
②解压zip包
我的解压路径:D:\elasticsearch-7.2.0\elasticsearch-head-master
③安装pathomjs
在dos窗口进入到head路径下,使用命令npm install安装pathomjs
④启用服务
使用命令npm start启用服务
修改elasticsearch.yml文件
增加
http.cors.enabled: true
http.cors.allow-origin: “*”
#设置可以访问的ip 这里全部设置通过
- ik 分词器
注意IK分词器,需要和ES引擎的版本对应上,不然会报错,(目前还没有用分词器呢)
git地址
链接:https://pan.baidu.com/s/1ItFzLKFPY9SP1P4dR3WrIQ 提取码:dvzf
或者使用命令,我也没试过
安装中文分词插件ik (安装完需要重启es) elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.5.4/elasticsearch-analysis-ik-6.5.4.zip
最终会把安装包解压到ES的\plugins\IK 目录,IK目录应该需要新建
- 至于什么mysql同步ES的同步脚本 logstash,没用过,复制一份
1、下载logstash
地址: https://www.elastic.co/cn/downloads/logstash
或
链接:https://pan.baidu.com/s/1QD9_agxRpL2Ta7Se0E68Bw
提取码:0gx0
2、下载: mysql-connector-java.jar
地址:https://dev.mysql.com/downloads/connector/j/5.1.html
或
链接:https://pan.baidu.com/s/1luDNpU7fjnqmCo-F6WSj_Q
提取码:srny
在logstash目录下创建一个mysql目录,把驱动文件放进去。
2、修改配置文件
在安装目录下 config 里创建个 mysqltoes.conf
在文件中加入以下内容:
input {
# 多张表的同步只需要设置多个jdbc的模块就行了
jdbc {
# mysql 数据库链接,shop为数据库名
jdbc_connection_string => "jdbc:mysql://127.0.0.1:3306/cesi?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC"
# 用户名和密码
jdbc_user => "root"
jdbc_password => "root"
# 驱动
jdbc_driver_library => "I:/logstash-7.5.1/mysql/mysql-connector-java-5.1.48.jar"
# 驱动类名
jdbc_driver_class => "com.mysql.jdbc.Driver"
#是否分页
jdbc_paging_enabled => "true"
jdbc_page_size => "50000"
#直接执行sql语句
statement =>"select * from articles"
# 执行的sql 文件路径+名称
# statement_filepath => "/hw/elasticsearch/logstash-6.2.4/bin/test.sql"
#设置监听间隔 各字段含义(由左至右)分、时、天、月、年,全部为*默认含义为每分钟都更新 每2秒更新
schedule => "*/2 * * * * *"
# 索引类型
#type => "jdbc"
}
}
output {
elasticsearch {
#es的ip和端口
hosts => ["http://127.0.0.1:9200"]
#ES索引名称(自己定义的)
index => "blog"
#文档类型
document_type => "log"
#设置数据的id为数据库中的字段
document_id => "%{id}"
}
stdout {
codec => json_lines
}
}
配置好后,打开cmd窗口,敲入启动命令:bin\logstash.bat -f config\mysqltoes.conf
自此ES就安装好了,剩下的就是PHP的使用了
php客户端
需要几个条件,
- PHP 7.1.0 或更高版本
- composer
- ext-curl : PHP 的 Libcurl 扩展(其实就是url了)
- 原生 JSON 扩展 ( ext-json) 1.3.7 或更高版本
使用 composer 安装 在根目录新建 composer.json 文件,文件内写入
{
"require": {
"elasticsearch/elasticsearch": "~7.0"
}
}
然后执行后面两条命令,下载ES的扩展类
curl -s http://getcomposer.org/installer | php
php composer.phar install
会在本家下载ES扩展包
后面就可以执行ES的操作了
<?php
require 'vendor/autoload.php';
use Elasticsearch\ClientBuilder;
//实例化操作类
$client = ClientBuilder::create()
// ->setHosts(['192.168.110.1:9200']) //手动确定地址
->build();
$params = [
'index' => 'my_index',//索引名/库名#index的名字不能是大写和下划线开头
'body' => [
'settings' => [
'number_of_shards' => 1,// 分片数
'number_of_replicas' => 0// 副本数
]
]
];
//新建index,ES数据库
$response = $client->indices()->create($params);
print_r($response);
$params = [
'index' => 'my_index',
'id' => 'my_id',
'body' => ['testField' => 'abc']
];
//新建索引,文档关系映射
$response = $client->index($params);
print_r($response);
$params = [
'index' => 'my_index',
'id' => 'my_id'
];
//查询文档,以id为条件
$response = $client->get($params);
print_r($response);
$params = [
'index' => 'my_index',
'body' => [
'query' => [
'match' => [
'testField' => 'abc'
]
]
]
];
//查询文档,以搜索条件
$response = $client->search($params);
print_r($response);