elasticsearch的docker方式安装及golang1.22版本使用elasticsearch7的示例代码

1.准备linux服务器,ip地址为192.168.137.116

2.安装docker-ce

yum -y install docker-ce

配置docker镜像

vim /etc/docker/daemon.json{"registry-mirrors": ["https://harbor:443", "https://985ecq8w.mirror.aliyuncs.com","https://docker.registry.cyou",
"https://docker-cf.registry.cyou",
"https://docker.jsdelivr.fyi",
"https://dockercf.jsdelivr.fyi",
"https://dockertest.jsdelivr.fyi",
"https://dockerpull.com",
"https://dockerproxy.cn",
"https://hub.uuuadc.top",
"https://docker.1panel.live",
"https://docker.anyhub.us.kg",
"https://docker.chenby.cn",
"https://dockerhub.jobcher.com",
"https://dockerhub.icu",
"https://docker.ckyl.me",
"https://docker.awsl9527.cn",
"https://docker.hpcloud.cloud",
"https://docker.m.daocloud.io"],"insecure-registries":["harbor:443"],"exec-opts": ["native.cgroupdriver=systemd"]
}

harbor安装什么的就不赘述了,docker pull能够正常使用就行

vim /etc/hosts
::1             localhost localhost.localdomain localhost6 localhost6.localdomain6
127.0.0.1       localhost localhost.localdomain localhost4 localhost4.localdomain4
192.168.137.30  harbor
192.168.137.116 ELK

启动docker

systemctl enable --now docker

3.docker pull镜像

docker pull docker.elastic.co/elasticsearch/elasticsearch:7.3.0
dcoker pull containerize/elastichd

推送到harbor

#登录及推送镜像到harbor
docker login harbor:443
docker tag docker.elastic.co/elasticsearch/elasticsearch:7.3.0 harbor:443/library/elasticsearch:7.3.0
docker push harbor:443/library/elasticsearch:7.3.0
docker tag containerize/elastichd:latest harbor:443/library/containerize/elastichd:latest
docker push harbor:443/library/containerize/elastichd:latest[root@ELK ~]# docker images
REPOSITORY                                      TAG       IMAGE ID       CREATED       SIZE
docker.elastic.co/elasticsearch/elasticsearch   7.3.0     bdaab402b220   5 years ago   806MB
harbor:443/library/elasticsearch                7.3.0     bdaab402b220   5 years ago   806MB
containerize/elastichd                          latest    c2202f76db37   7 years ago   28.1MB
harbor:443/library/containerize/elastichd       latest    c2202f76db37   7 years ago   28.1MB

4.创建一个网络

docker network create esnet

5.启动elasticsearch容器

docker run --name es -p 9200:9200 -p 9300:9300 --network esnet -e "discovery.type=single-node" bdaab402b220

验证是否成功启动

[root@ELK ~]# curl -X GET "http://localhost:9300/"
This is not ancurl -X GET "http://localhost:9200/"
{"name" : "dbda370d76cd","cluster_name" : "docker-cluster","cluster_uuid" : "pN-AU14rTSudsqG1yU4TkA","version" : {"number" : "7.3.0","build_flavor" : "default","build_type" : "docker","build_hash" : "de777fa","build_date" : "2019-07-24T18:30:11.767338Z","build_snapshot" : false,"lucene_version" : "8.1.0","minimum_wire_compatibility_version" : "6.8.0","minimum_index_compatibility_version" : "6.0.0-beta1"},"tagline" : "You Know, for Search"
}

6.启动可视化容器ElasticHD

docker run -p 9800:9800  -d --link es:demo --network esnet -e "discovery.type=single-node" containerize/elastichd

7.浏览器打开ElasticHD

8.使用goland开发go查询elasticsearch示例

package mainimport ("context""encoding/json""fmt""log""strings""github.com/elastic/go-elasticsearch/v7""github.com/elastic/go-elasticsearch/v7/esapi"
)func main() {// 创建 Elasticsearch 客户端_, err := elasticsearch.NewDefaultClient()if err != nil {log.Fatalf("Error creating the client: %s", err)}// 设置 Elasticsearch URLcfg := elasticsearch.Config{Addresses: []string{"http://192.168.137.116:9200"},}esClient, err := elasticsearch.NewClient(cfg)if err != nil {log.Fatalf("Error creating the client with custom config: %s", err)}// 创建索引indexName := "new_index"if err := createIndex(esClient, indexName); err != nil {log.Fatalf("Error creating index: %s", err)}// 插入一些数据if err := insertData(esClient, indexName); err != nil {log.Fatalf("Error inserting data: %s", err)}// 执行一个简单的搜索请求res, err := search(esClient, indexName)if err != nil {log.Fatalf("Error getting response: %s", err)}defer res.Body.Close()// 检查响应状态if res.IsError() {var e map[string]interface{}if err := json.NewDecoder(res.Body).Decode(&e); err != nil {log.Fatalf("Error parsing the response body: %s", err)} else {// Print the response status and error information.log.Fatalf("[%s] %s: %s",res.Status(),e["error"].(map[string]interface{})["type"],e["error"].(map[string]interface{})["reason"],)}}// 解析并打印搜索结果var result map[string]interface{}if err := json.NewDecoder(res.Body).Decode(&result); err != nil {log.Fatalf("Error parsing the response body: %s", err)}fmt.Printf("%s\n", result)
}// createIndex 函数创建索引
func createIndex(client *elasticsearch.Client, indexName string) error {// 构建创建索引的请求req := esapi.IndicesCreateRequest{Index: indexName,Body: strings.NewReader(`{"settings": {"number_of_shards": 1,"number_of_replicas": 0},"mappings": {"properties": {"title": {"type": "text"},"content": {"type": "text"}}}}`),Pretty: true,}// 执行请求res, err := req.Do(context.Background(), client)if err != nil {return err}defer res.Body.Close()if res.IsError() {var e map[string]interface{}if err := json.NewDecoder(res.Body).Decode(&e); err != nil {return err} else {// Print the response status and error information.return fmt.Errorf("[%s] %s: %s",res.Status(),e["error"].(map[string]interface{})["type"],e["error"].(map[string]interface{})["reason"],)}}return nil
}// insertData 函数插入数据
func insertData(client *elasticsearch.Client, indexName string) error {// 构建插入数据的请求req := esapi.IndexRequest{Index:      indexName,DocumentID: "1",Body:       strings.NewReader(`{"title": "Example Title", "content": "Example Content"}`),Refresh:    "true",}// 执行请求res, err := req.Do(context.Background(), client)if err != nil {return err}defer res.Body.Close()if res.IsError() {var e map[string]interface{}if err := json.NewDecoder(res.Body).Decode(&e); err != nil {return err} else {// Print the response status and error information.return fmt.Errorf("[%s] %s: %s",res.Status(),e["error"].(map[string]interface{})["type"],e["error"].(map[string]interface{})["reason"],)}}return nil
}// search 函数执行搜索请求
func search(client *elasticsearch.Client, indexName string) (*esapi.Response, error) {// 构建搜索请求q := `{"query": {"match_all": {}}}`// 发送搜索请求req := esapi.SearchRequest{Index:  []string{indexName},Body:   strings.NewReader(q),Pretty: true,}// 执行请求res, err := req.Do(context.Background(), client)if err != nil {return nil, err}return res, nil
}

9.浏览器查看数据是否改变

10.创建elasticsearch集群

注意: 先删除之前创建的容器,以免端口冲突

(1)相同的ip,不同的端口

192.168.137.116服务器

es1.yml,es2.yml,es3.yml文件见压缩包资源

原理和下面的(2)逻辑差不多,只要区分不同的服务就行,ip或者端口不同只是区分的条件

不过因为是在一个服务器里面执行,为了端口不冲突,就要映射不同的端口,更加麻烦罢了

在/root目录下执行

cat >> /etc/sysctl.conf << EOF
vm.max_map_count=262144
EOF
sysctl -p
mkdir data1
chmod 777 data1
mkdir data2
chmod 777 data2
mkdir data3
chmod 777 data3docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d \
-p 9200:9200 \
-p 9300:9300 \
-v ./es1.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v ./data1:/usr/share/elasticsearch/data \
--name ES01 \
harbor:443/library/elasticsearch:7.3.0docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d \
-p 9201:9201 \
-p 9301:9301 \
-v ./es2.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v ./data2:/usr/share/elasticsearch/data \
--name ES02 \
harbor:443/library/elasticsearch:7.3.0docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d \
-p 9202:9202 \
-p 9302:9302 \
-v ./es3.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v ./data3:/usr/share/elasticsearch/data \
--name ES03 \
harbor:443/library/elasticsearch:7.3.0

安装elasticsearch-head进行集群可视化查看

docker pull mobz/elasticsearch-head:5
docker run -it --name="es-admin" -p 9100:9100 mobz/elasticsearch-head

(2)不同的ip,相同的端口

192.168.137.21服务器

es1.yml文件

cluster.name: es-cluster
node.name: es-0001
network.bind_host: 0.0.0.0
network.publish_host: 192.168.137.21
http.port: 9200
transport.tcp.port: 9300
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true
node.data: true
discovery.zen.ping.unicast.hosts: ["192.168.137.21:9300","192.168.137.22:9300","192.168.137.23:9300"]
discovery.zen.minimum_master_nodes: 2
cluster.initial_master_nodes: ["es-0001","es-0002","es-0003"]

在/root目录下执行

cat >> /etc/sysctl.conf << EOF
vm.max_map_count=262144
EOF
sysctl -p
mkdir data1
chmod 777 data1docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d \
-p 9200:9200 \
-p 9300:9300 \
-v ./es1.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v ./data1:/usr/share/elasticsearch/data \
--name ES01 \
harbor:443/library/elasticsearch:7.3.0

192.168.137.22服务器

cluster.name: es-cluster
node.name: es-0002
network.bind_host: 0.0.0.0
network.publish_host: 192.168.137.22
http.port: 9200
transport.tcp.port: 9300
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true
node.data: true
discovery.zen.ping.unicast.hosts: ["192.168.137.21:9300","192.168.137.22:9300","192.168.137.23:9300"]
discovery.zen.minimum_master_nodes: 2
cluster.initial_master_nodes: ["es-0001","es-0002","es-0003"]

在/root目录下执行

cat >> /etc/sysctl.conf << EOF
vm.max_map_count=262144
EOF
sysctl -p
mkdir data1
chmod 777 data1docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d \
-p 9200:9200 \
-p 9300:9300 \
-v ./es1.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v ./data1:/usr/share/elasticsearch/data \
--name ES01 \
harbor:443/library/elasticsearch:7.3.0

192.168.137.23服务器

cluster.name: es-cluster
node.name: es-0003
network.bind_host: 0.0.0.0
network.publish_host: 192.168.137.23
http.port: 9200
transport.tcp.port: 9300
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true
node.data: true
discovery.zen.ping.unicast.hosts: ["192.168.137.21:9300","192.168.137.22:9300","192.168.137.23:9300"]
discovery.zen.minimum_master_nodes: 2
cluster.initial_master_nodes: ["es-0001","es-0002","es-0003"]

 在/root目录下执行

cat >> /etc/sysctl.conf << EOF
vm.max_map_count=262144
EOF
sysctl -p
mkdir data1
chmod 777 data1docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d \
-p 9200:9200 \
-p 9300:9300 \
-v ./es1.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v ./data1:/usr/share/elasticsearch/data \
--name ES01 \
harbor:443/library/elasticsearch:7.3.0

使用浏览器查看

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/878497.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c# checkbox的text文字放到右边

checkbox的text文字放到右边 实现方法如下图 特此记录 anlog 2024年9月2日

RKNPU2从入门到实践 ---- 【8】借助 RKNN Toolkit lite2 在RK3588开发板上部署RKNN模型

前言 作者使用的平台为Ubuntu20.04虚拟系统&#xff0c;开发板为瑞芯微RK3588&#xff0c;开发板上的系统为Ubuntu22.04系统。 一、任务 完成RKNN模型的部署&#xff0c;RKNN模型的部署是将RKNN模型放到开发板上&#xff0c;应用程序可以加载RKNN模型&#xff0c;从而在嵌入式…

《JavaEE进阶》----5.<SpringMVC②剩余基本操作(CookieSessionHeader响应)>

Cookie和Session简介。 Spring MVC的 2.请求 Cookie的设置和两种获取方式 Session的设置和三种获取方式。 3.响应 1.返回静态页面 2.返回数据 3.返回HTML片段 4.返回JSON 5.设置状态码 6.设置header 三、&#xff08;接上文&#xff09;SpringMVC剩余基本操作 3.2postman请求 …

两大电商巨头强强联手,实力宠卖家,一键通9国市场!

独家深度剖析&#xff0c;Lazada与Daraz分别作为东南亚与南亚电商领域的璀璨明星&#xff0c;正携手演绎一场前所未有的商业盛宴。这两大电商巨擘的强强联合&#xff0c;不仅标志着电商版图的一次重大扩张&#xff0c;更是为全球商家开启了一扇通往东南亚与南亚九大市场广阔蓝海…

Uniapp 调用aar、jar包

废话 坑是真的多&#xff0c;官方文档简陋到可以忽略不计。 大概流程 1. 新建一个Android模块&#xff0c;需要用这个模块打包成aar 2. 用这个模块引用uniapp-v8-release.aar以及你需要用到的aar、jar&#xff0c;用不到则忽略这步 坑一&#xff1a;不要直接放到这个模块的…

详解JavaScript

目录 JavaScript 引入样式 基础语法 变量 数据类型 运算符 JavaScript对象 数组 数组定义 数组操作 函数 语法格式 关于参数个数 函数表达式 对象 JQuery 语法 选择器 事件 常见的事件 操作元素 获取/设置元素内容 获取/设置元素属性 获取/设置CSS属性 …

StringTable

10.1. String的基本特性 String&#xff1a;字符串&#xff0c;使用一对""引起来表示String声明为final的&#xff0c;不可被继承String实现了Serializable接口&#xff1a;表示字符串是支持序列化的。String实现了Comparable接口&#xff1a;表示string可以比较大小…

JMeter 工具安装以及简单使用

一、安装以及汉化 傻瓜式JMeter下载和环境配置及永久汉化-CSDN博客https://blog.csdn.net/weixin_45608163/article/details/136528719 二、发送GET请求 配置请求头: 配置该线程组的请求: 放在线程组统计,下面请求则共享配置

[图解]SysML和EA建模住宅安全系统-活动作为块

1 00:00:00,210 --> 00:00:04,360 下一个步骤是识别潜在的失效 2 00:00:06,850 --> 00:00:11,150 这里它是用一个块定义图来表达的 3 00:00:12,150 --> 00:00:16,790 图17.21&#xff0c;失效模式识别和因果依赖 4 00:00:19,110 --> 00:00:22,400 但是这个块定义…

Java基于微信小程序的美食推荐小程序,附源码

博主介绍&#xff1a;✌Java徐师兄、7年大厂程序员经历。全网粉丝13w、csdn博客专家、掘金/华为云等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3fb; 不…

通过Docker部署Nacos,以及Docker Desktop进行管理

目录 一.不需要持久化存储 1.启动容器 2.查看容器和镜像​ 3.容器管理 二.持久化存储启动mysql容器 1.创建docker卷 2.运行容器,指定卷 3.在nacos里面随便建个配置文件 4.停止并删除nacos容器 5.重新运行容器,并且挂载相同的卷,也就是上面第二步的命令 6.打开nacos并…

fiddler安装和汉化和抓https的包

下载和汉化 官网下载 https://www.telerik.com/ 1、「安装英文版Fiddler」、假如将Fiddler安装在&#xff1a;「D:\Programs\Fiddler」 2、将压缩包「fiddler菜单汉化」文件夹中的「FiddlerTexts.txt」复制到「D:\Programs\Fiddler\」 3、将压缩包「fiddler菜单汉化」文件夹…

外部排序之文件归并

概述 外部排序&#xff08;External Sorting&#xff09;是一种用于处理无法完全加载到内存中的大量数据的排序技术。由于内存的限制&#xff0c;传统的内存排序算法&#xff08;如快速排序、归并排序&#xff09;可能无法处理超大规模的数据集合。因此&#xff0c;需要采用外…

JVM面试(一)什么是虚拟机?什么是class文件?

什么是java虚拟机&#xff1f; 如果通俗点来讲&#xff0c;我们在电脑上一行行敲出来的代码&#xff0c;电脑本身是不认识的&#xff0c;最终是要转成电脑可以运行的101001这种字节。 但是这些我们又不可能手动来转换&#xff0c;所以呢&#xff0c;就需要一个工具&#xff0…

PyCharm中python语法要求——消去提示波浪线

PyCharm中python语法要求——消去提示波浪线 关闭代码规范检查 在Setting里边搜索pep&#xff0c;取消勾选pep8 coding style violation 问题产生 解决问题 按照下图操作&#xff0c;也可直接CtrlAlts弹出设置页面 在 Settings 中 &#xff1a; Editor > Color Sheame >…

Nginx: TCP建立连接的优化和启用Fast Open功能

TCP 建立连接优化 在三次握手中&#xff0c;相关TCP的内核参数可优化这一过程 net.ipv4.tcp_syn_retries 6net.ipv4.tcp_synack_retries 5net.ipv4.tcp_syncookies 0net.ipv4.tcp_max_syn_backlognet.core.somaxconnnet.core.netdev_max_backlog 1 &#xff09; net.ipv4…

书生大模型实战营(1)——InterStudio基础知识+Vscode SSH连接远程服务器+Linux基础指令

参加书生.浦江大模型实战训练营&#xff0c;学习大模型知识和微调技术&#xff0c;所有课程免费&#xff0c;通过闯关的形式学习&#xff0c;也比较有趣。一起来了解LLM的世界。邀请链接 产品简介 InternStudio 是大模型时代下的云端算力平台。基于 InternLM 组织下的诸多算法…

【工控】线扫相机小结 第二篇

背景 上一篇中《线扫相机小结》中介绍了一些基础知识和注意事项&#xff0c;这一篇是对上一篇的进一步补充。 会介绍线扫相机的一些调试技巧。 如何在线调试&#xff1f; 我们知道&#xff0c;线扫相机不能像面阵相机一样实时的呈现图像&#xff0c;只能一行行的扫描&#x…

HX711—称重模块

1、简介 HX711 采用了海芯科技集成电路专利技术&#xff0c; 是一款专为高精度电子秤而设计的 24 位 A/D 转 换器芯片。 2、原理图 PCB参考设计原理图 3、模块驱动代码&#xff08;固件库&#xff09; 数据读取代码分析 HX711信号读取时序 初始化&#xff1a; 将 PD_SCK&…

原生冻结进程分析(U)

一、概要 1.定义&#xff1a; 当应用切换到后台并且没有其他活动时&#xff0c;系统会在一定时间内通过状态判断&#xff0c;将进程 ID 迁移到冻结的 cgroup 节点上&#xff0c;实现冻结 CACHE 应用。这项功能可以减少活跃缓存应用在后台存在时所消耗的 CPU 资源&#xff0c;从…