1.使用docker-compose安装elasticsearch和kibana
1.1 Compose介绍
Docker Compose是一个用来定义和运行复杂应用的Docker工具。一个使用Docker容器的应用,通常由多个容器组成。使用Docker Compose不再需要使用shell脚本来启动容器。 Compose 通过一个配置文件来管理多个Docker容器,在配置文件中,所有的容器通过services来定义,然后使用docker-compose脚本来启动,停止和重启应用,和应用中的服务以及所有依赖服务的容器,非常适合组合使用多个容器进行开发的场景。
1.2 安装方法
通过curl网络请求安装docker-compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
给予docker-compose执行权限
sudo chmod +x /usr/local/bin/docker-compose
查看安装的dokcer-compose版本
docker-compose --version
查看到类似信息即可证明docker-compose安装成功。
在/etc/sysctl.conf中添加vm.max_map_count=262144
vim /etc/sysctl.conf
vm.max_map_count=262144
#使配置生效
sysctl -p
创建volume挂载目录,并修改目录用户和用户组。由于elasticsearch6之后不允许使用root启用,所以需要修改/usr/share/elasticsearch/data的权限为1000
mkdir -pv /usr/share/elasticsearch/data
chown 1000:1000 /usr/share/elasticsearch/data
编写部署文件
mkdir /usr/local/elasticsearch-kibana
cd elasticsearch-kibana/
vim docker-compose.yml
配置docker中的Es与kibana
version: '2.2'
services:
elasticsearch:
image: elasticsearch:6.6.2
container_name: elasticsearch
environment:
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
volumes:
- /usr/share/elasticsearch/data:/usr/share/elasticsearch/data
- ./elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
ports:
- 9200:9200
- 9300:9300
mem_limit: 1024m
restart: always
kibana:
image: kibana:6.6.2
container_name: kibana
ports:
- 5601:5601
depends_on:
- elasticsearch
mem_limit: 512m
vim elasticsearch.yml
#集群名
cluster.name: "elasticsearch"
# 允许外部网络访问
network.host: 0.0.0.0
#支持跨域
http.cors.enabled: true
#支持所有域名
http.cors.allow-origin: "*"
# 关闭xpack安全校验,在kibana中使用就不需要输入账号密码
xpack.security.enabled: false
后台启动elasticsearch和kibana容器
docker-compose up -d
停止
docker-compose down
停止并卸载
volumes docker-compose down -v
检查elasticsearch是否启动成功
curl 127.0.0.1:9200
访问kibana
[http://主机ip:5601]
点击 Dev Tools菜单
再点击下图中的三角形运行查询语句
2.为Es安装IK分词器与拼音分词器。
在线安装
进入容器
docker exec -it elasticsearch /bin/bash
在线下载并安装
拼音分词器:
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-pinyin/releases/download/v6.6.2/elasticsearch-analysis-pinyin-6.6.2.zip
Ik分词器:
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.6.2/elasticsearch-analysis-ik-6.6.2.zip
需注意,安装时版本号需对应自己ES的版本号配置。
由于是直接从GitHub上在线下载文件,受墙的影响速度可能较慢,建议换源并挂载在后台运行。
下载完成后,进入kibana调用
GET _cat/plugins
出现如下插件即代表安装成功。
3.PHP使用ElasticSearch
通过composer 安装
composer require 'elasticsearch/elasticsearch'
在代码中引入
require 'vendor/autoload.php';
use Elasticsearch\ClientBuilder;
$client = ClientBuilder::create()->setHosts(['172.16.55.53'])->build();
下面循序渐进完成一个简单的添加和搜索的功能。
首先要新建一个 index:
index 对应关系型数据(以下简称MySQL)里面的数据库,而不是对应MySQL里面的索引,这点要清楚
$params = [
'index' => 'myindex', #index的名字不能是大写和下划线开头
'body' => [
'settings' => [
'number_of_shards' => 2,
'number_of_replicas' => 0
]
]
];
$client->indices()->create($params);
在MySQL里面,光有了数据库还不行,还需要建立表,ES也是一样的,ES中的type对应MySQL里面的表。
注意:ES6以前,一个index有多个type,就像MySQL中一个数据库有多个表一样自然,但是ES6以后,每个index只允许一个type,在往以后的版本中很可能会取消type。
type不是单独定义的