ES搭建

1.解压
tar -zxvf elasticsearch-7.4.0-linux-x86_64.tar.gz
2.配置专属用户,es不可使用root用户启动
useradd es
chown es.es -R /tools/es/elasticsearch-7.4.0
3.修改配置
vim elasticsearch.yml
node.name: node-1
network.host: 0.0.0.0
#集群初始主节点
cluster.initial_master_nodes: [“node-1”]
4.修改jvm配置
当network.host修改后就会被认为是生产环境,对环境的配置依赖变高,因此需要修改jvm配置
vim jvm.options
-Xms128m
-Xmx128m
5.修改系统内存映射数
vim /etc/sysctl.conf
vm.max_map_count=655360
#执行以下命令配置生效
sysctl -p
6.修改文件最大连接数
vim /etc/security/limits.conf
#任何用户可以打开的最大的文件描述符数量,默认1024,这里的数值会限制tcp连接
soft nofile 65535
hard nofile 65535
#任何用户可以创建的最大进程数
soft nproc 4096
hard nproc 4096
7.修改jdk配置
vim elasticsearch-env
if [ ! -z “$JAVA_HOME” ]; then
JAVA=”$ES_HOME/jdk/bin/java”
else
if [ “$(uname -s)” = “Darwin” ]; then
# OSX has a different structure
JAVA=”$ES_HOME/jdk/Contents/Home/bin/java”
else
JAVA=”$ES_HOME/jdk/bin/java”
fi
fi
8.启动服务
cd cd /tools/es/elasticsearch-7.4.0/bin/
./elasticsearch
#后台启动
./elasticsearch -d

ES集群安装

ELasticsearch的集群是由多个节点组成的,通过cluster.name设置集群名称,并且用于区分其它的集群,
每个节点通过node.name指定节点的名称。

在Elasticsearch中,节点的类型主要有4种:

master节点
配置文件中node.master属性为true(默认为true),就有资格被选为master节点。
master节点用于控制整个集群的操作。比如创建或删除索引,管理其它非master节点等。
data节点
配置文件中node.data属性为true(默认为true),就有资格被设置成data节点。
data节点主要用于执行数据相关的操作。比如文档的CRUD。
客户端节点
配置文件中node.master属性和node.data属性均为false。
该节点不能作为master节点,也不能作为data节点。
可以作为客户端节点,用于响应用户的请求,把请求转发到其他节点
部落节点
当一个节点配置tribe.*的时候,它是一个特殊的客户端,它可以连接多个集群,
在所有连接的集群上执行 搜索和其他操作。

给data目录授权
chmod 777 /data
注意:discovery.zen.minimum_master_nodes 设置值为N(节点数)/2+1,否则会出现脑裂问题
1.集群配置
#node01的配置:
##集群名称
cluster.name: es-itcast-cluster
##节点名称
node.name: node01
##是否为master
node.master: true
##是否为数据节点
node.data: true
network.host: 0.0.0.0
http.port: 9200
#集群主机
discovery.zen.ping.unicast.hosts: [“192.168.10.100”,”192.168.10.101”,”192.168.10.102”]
# 最小节点数
discovery.zen.minimum_master_nodes: 2
# 跨域专用
http.cors.enabled: true
http.cors.allow-origin: “*”
path.data: /data/elastic/data
path.logs: /data/elastic/logs

node02的配置:
##集群名称
cluster.name: es-itcast-cluster
##节点名称
node.name: node02
##是否为master
node.master: true
##是否为数据节点
node.data: true
network.host: 0.0.0.0
http.port: 9200
#集群主机
discovery.zen.ping.unicast.hosts: [“192.168.10.100”,”192.168.10.101”,”192.168.10.102”]
# 最小节点数
discovery.zen.minimum_master_nodes: 2
# 跨域专用
http.cors.enabled: true
http.cors.allow-origin: “*”
path.data: /data/elastic/data
path.logs: /data/elastic/logs

node03的配置:
##集群名称
cluster.name: es-itcast-cluster
##节点名称
node.name: node03
##是否为master
node.master: true
##是否为数据节点
node.data: true
network.host: 0.0.0.0
http.port: 9200
#集群主机
discovery.zen.ping.unicast.hosts: [“192.168.10.100”,”192.168.10.101”,”192.168.10.102”]
# 最小节点数
discovery.zen.minimum_master_nodes: 2
# 跨域专用
http.cors.enabled: true
http.cors.allow-origin: “*”
path.data: /data/elastic/data
path.logs: /data/elastic/logs

分别启动3个节点
./elasticsearch -d

KIBANA搭建

1.解压安装
tar -zxvf kibana-7.4.0-linux-x86_64.tar.g
sudo mv kibana-7.4.0-linux-x86_64 /tools/es/kibana
sudo chown es.es -R /tools/es/kibana
2.配置文件
vim /tools/es/kibana/config/kibana.yml
#对外暴露服务的地址
server.host: “0.0.0.0”

配置Elasticsearch
elasticsearch.hosts: [“http://192.168.2.100:9200","http://192.168.2.101:9200","http://192.168.2.102:9200“]
#配置中文汉化
i18n.locale: “zh-CN”
3.启动
su - es
./bin/kibana

image.png

GO操作ES

安装依赖

go get github.com/olivere/elastic/v7

操作示例

  1. package main
  2. import (
  3. "context"
  4. "fmt"
  5. "github.com/olivere/elastic/v7"
  6. )
  7. type Student struct {
  8. Name string `json:"name"`
  9. Age int `json:"age"`
  10. }
  11. func main() {
  12. client, err := elastic.NewClient(elastic.SetURL("http://192.168.72.10:9200"))
  13. if err != nil {
  14. return
  15. }
  16. s := &Student{"test", 24}
  17. //链式操作
  18. put1, err := client.Index().Index("student").BodyJson(s).Do(context.Background())
  19. if err != nil {
  20. panic(err)
  21. }
  22. fmt.Println(put1)
  23. }