通过docker安装ElasticSearch并与PHP结合使用

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不是单独定义的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值