centos7在docker上安装es(elasticsearch)

Posted xzm_

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了centos7在docker上安装es(elasticsearch)相关的知识,希望对你有一定的参考价值。

因为需要部署kibana容器,因此需要让es和kibana容器互联

1.创建网络

docker network create es-net

2.将es的tar文件拉取到虚拟机中(因为es文件较大,不建议直接使用docker进行拉取)

没有es.tar文件的可以下载:

链接:https://pan.baidu.com/s/1eTdUKBY6U9-evh7mrSqmJA 
提取码:ik8x

3.执行命令导入

# 导入数据
docker load -i es.tar

4.执行es的安装

docker run -d \\
	--name es \\
    -e "ES_JAVA_OPTS=-Xms1024m -Xmx1024m" \\
    -e "discovery.type=single-node" \\
    -v es-data:/usr/share/elasticsearch/data \\
    -v es-plugins:/usr/share/elasticsearch/plugins \\
    --privileged \\
    --network es-net \\
    -p 9200:9200 \\
    -p 9300:9300 \\
elasticsearch:7.12.1

安装kibana

1.将kibana的tar文件拉取到虚拟机中(因为es文件较大,不建议直接使用docker进行拉取)

没有kibana.tar文件的可以下载:

链接:https://pan.baidu.com/s/1eTdUKBY6U9-evh7mrSqmJA 
提取码:ik8x

2.执行命令导入

# 导入数据
docker load -i kibana.tar

3.运行命令

docker run -d \\
--name kibana \\
-e ELASTICSEARCH_HOSTS=http://es:9200 \\
--network=es-net \\
-p 5601:5601  \\
kibana:7.12.1

安装ik分词器

1.在线安装(不推荐,较慢)

# 进入容器内部
docker exec -it elasticsearch /bin/bash

# 在线下载并安装
./bin/elasticsearch-plugin  install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.12.1/elasticsearch-analysis-ik-7.12.1.zip

#退出
exit
#重启容器
docker restart elasticsearch

2.离线安装

(1)查看数据卷目录

docker volume inspect es-plugins

(2)将ik分词器进行解压并放到所查看的目录中

(3)重启容器

# 4、重启容器
docker restart es

docker安装 es7.17.6+IK分词+Go elastic

1.下载docker 镜像

进入 Docker Hub 选择所需要的版本

docker pull elasticsearch:7.17.6

2.创建容器挂载目录及设置配置文件

mkdir -p /data/docker/es/config
mkdir -p /data/docker/es/data
mkdir -p /data/docker/es/plugins

创建 elasticsearch.yml 配置文件并更改权限

vi /data/docker/es/config/elasticsearch.yml
#配置yml文件
http.host: 0.0.0.0
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-headers: Authorization
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
chmod -R 777 /data/docker/es

3.启动es容器并配置账户密码

启动es容器并且挂载设置目录

docker run --name es --restart=always -p 10012:9200 -p 10013:9300 \\
-e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \\
-v /data/docker/es/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \\
-v /data/docker/es/data:/usr/share/elasticsearch/data \\
-v /data/docker/es/plugins:/usr/share/elasticsearch/plugins \\
-d elasticsearch:7.17.6

进入容器,配置账号密码

docker exec -it es /bin/bash

在 bin 目录 并修改密码,执行过程中 需要输入多次,请记录 后期需要使用该密码登录 es

./bin/elasticsearch-setup-passwords interactive

 3.安装ik分词器

IK项目地址:https://github.com/medcl/elasticsearch-analysis-ik
首先需要说明的是,IK插件必须和 ElasticSearch 的版本一致,否则不兼容。
本系统采用的elasticsearch版本为7.17.6

./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.17.6/elasticsearch-analysis-ik-7.17.6.zip

退出容器并重启es

docker restart es

打开浏览器 使用 用户名 :elastic 密码 : (自己设置的密码)

package main

import (
	"context"
	"fmt"
	"github.com/olivere/elastic/v7"
	"reflect"
)

type Content struct 
	Title   string `json:"title"`
	Author  string `json:"author"`
	Content string `json:"content"`
	Status  int    `json:"status"`


func main() 

	// https://github.com/olivere/elastic/wiki/Configuration
	client, err := elastic.NewClient(
		elastic.SetURL("http://xxxxxxxxxxx:10012"),
		elastic.SetBasicAuth("elastic", "password"),
		elastic.SetSniff(false),
	)
	if err != nil 
		fmt.Println("错误信息", err)
		panic(err)
	
	content := ContentTitle: "标题title", Author: "李四", Content: "文体内容", Status: 2

	do, err := client.Index().Index("t_content").BodyJson(content).Do(context.Background())
	if err != nil 
		panic(err)
	
	fmt.Printf("id %s , index %s, type %s", do.Id, do.Index, do.Type)

	boolQ := elastic.NewBoolQuery()
	boolQ.Must(elastic.NewMatchQuery("author", "李四"))
	boolQ.Filter(elastic.NewRangeQuery("status").Gt(1))
	res, err := client.Search().Index("t_content").Query(boolQ).Do(context.Background())
	printEmployee(res, err)



//打印查询到的Employee
func printEmployee(res *elastic.SearchResult, err error) 
	if err != nil 
		print(err.Error())
		return
	
	var typ Content
	for _, item := range res.Each(reflect.TypeOf(typ))  //从搜索结果中取数据的方法
		t := item.(Content)
		fmt.Printf("\\n%#v\\n", t)
	

 

以上是关于centos7在docker上安装es(elasticsearch)的主要内容,如果未能解决你的问题,请参考以下文章

在centos7上安装ES

docker安装 es7.17.6+IK分词+Go elastic

docker安装 es7.17.6+IK分词+Go elastic

docker安装 es7.17.6+IK分词+Go elastic

centos7下的docker安装ES集群

centos7 在docker下安装es Elasticsearch