ElasticSearch学习之一:基础知识+单节点集群搭建

mac2025-09-17  37

一、ES相关知识

ES基于RESTful web接口并且构建在Apache lucene之上的开源分布式搜索引擎。同时ES是一个分布式文档数据库,每个字段均可被索引、每个字段数据均可被搜索,能够横向扩展数以百计的服务器存储以及处理PB级的数据。

1. 可以在极短时间内存储、搜索和分析大量的数据

2. 通常作为具有复杂搜索场景下的核心发动机

ES高可用且高扩展。一方面同升级硬件完成系统扩展,称为垂直或向上扩展,另一方面,则增加更过的服务器来完成系统扩展,称为水平扩展或横向扩展。

ES架构组成:

Gateway,代表ES索引的持久化存储方式。ES默认将数据存入内存,当内存满后在持久化到Gateway中。当ES集群关闭或重启后,从Geteway里读取索引数据。

Distributed Lucene Directory,Lucene里的索引文件组成的目录,负责管理索引文件,包括数据的读入、写入以及索引的添加合并等。

River,代表数据源,以插件形式存在于ES。

Mapping,映射。

Search Module,搜索模块、支持搜索常用操作。

Index Module,索引模块、支持索引常用操作。

Discovery,负责集群的master节点发现。其发现机制:默认实现方式是单播和多播的形式,同时支持点对点的实现。

Scripting,脚本语言。

Transport,代表ES内部节点,跟集群的客户端交互。

RESTful Style API,通过RESTful方式实现的API。

3rd plugins,第三方插件。

Java(Netty),开发框架。

JMX,监控。

二、ES的搭建

搜索引擎,作用:更快的找到我们所要的,方式:生成索引,步骤:(1)把资料编号(2)把每篇资料的内容切词(3)处理成“词--》资料”的关系

Lucene:搜索引擎的类库,由Java开发

solr:开源项目,底层基于Lucene实现的搜索引擎产品

ElasticSearch:开源项目,提供了RESTful API(直接通过HTTP协议收发请求和响应,接口清晰简单)的服务

1. Linux单节点配置ES(安装ES版本6.4.1)

(1)添加用户

groupadd es

useradd es -g es -p password(指定密码)

chown -R es:es elasticsearch-6.4.1(赋予该目录下所有文件可操作权限)

(2)切换用户,并修改配置问健

su es

vi elasticsearch.yml 修改配置文件参数值 network.host:Linux的ip

(3)启动ES

前端启动:cd elasticsearch-6.4.1

./bin/elasticsearch

后端启动:cd elasticsearch-6.4.1

./bin/elasticsearch -d

本地测试:curl -X 127.0.0.1:9200

 

注意:启动过程中可能会显示报错

解决办法:

ERROR: [3] bootstrap checks failed

[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]

解决办法:

编辑 /etc/security/limits.conf,追加以下内容;

* soft nofile 65536

* hard nofile 65536

此文件修改后需要重新登录用户,才会生效

[2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

解决办法:

编辑 /etc/sysctl.conf,追加以下内容:

vm.max_map_count=655360

保存后,执行:

 

sysctl -p

 

[3]: max number of threads [2048] for user [tongtech] is too low, increase to at least [4096]

错误原因:启动检查未通过

    elasticsearch用户的最大线程数太低

解决办法:

vim /etc/security/limits.conf

* soft nproc 4096

* hard nproc 4096

2. ES的集群部署

1)时钟同步

# 设置本地时间

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

# 集群时间日期同步NTP

yum install ntp

ntpdate pool.ntp.org

2)修改hosts文件

vim /etc/hosts

192.168.10.129 ES_01 192.168.10.130 ES_02 192.168.10.131 ES_03

3)关闭防火墙

4)修改elasticsearch.yml配置文件,如下:

cluster.name: es-group #集群名称,可以自行修改 node.name: node-1 #节点名称,自行修改 network.host: 172.27.1.1 #主机地址,这里写本机IP # 是否参与master选举和是否存储数据;这里根据你们具体部署的机子自行调整,下面默认为master节点 node.master: true # 节点类型,若三台一般部署为 master[true] client[true] data[false] node.data: true # 节点类型,若三台一般部署为 master[true] client[false] data[true] # master选举最少的节点数,这个一定要设置为N/2+1,其中N是:具有master资格的节点的数量,而不是整个集群节点个数 discovery.zen.minimum_master_nodes: 2 # discovery ping的超时时间,拥塞网络,网络状态不佳的情况下设置高一点 # discovery.zen.ping.timeout: 3s # [单播] 注意,分布式系统整个集群节点个数N要为奇数个!! discovery.zen.ping.unicast.hosts: ["172.27.1.1:9300", "172.27.1.2:9300", "172.27.1.3:9300"]

5)启动ES集群

3. 安装Kibana插件

1)修改kibana.yml配置文件,如下:

server.port: 5601 server.host: "0.0.0.0" elasticsearch.url: "http://192.168.10.129:9200"

2)启动Kibana

bin/kibana,浏览器访问http://IP:5601

 

 

 

最新回复(0)