elasticsearch安装手册

一. 简介

Elasticsearch 是一个分布式可扩展的实时搜索和分析引擎,一个建立在全文搜索引擎 Apache Lucene™ 基础上的搜索引擎.当然 Elasticsearch 并不仅仅是 Lucene 那么简单,它不仅包括了全文搜索功能,还可以进行以下工作:

分布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索。

实时分析的分布式搜索引擎。

可以扩展到上百台服务器,处理PB级别的结构化或非结构化数据

像天猫、京东这样的商城,用户访问商城的首页,一般都会直接搜索来寻找自己想要购买的商品。而商品的数量非常多,而且分类繁杂。
如果能正确的显示出用户想要的商品,并进行合理的过滤,尽快促成交易,是搜索系统要研究的核心。
面对这样复杂的搜索业务和数据量,使用传统数据库搜索就显得力不从心,一般我们都会使用全文检索技术,比如Solr,Elasticsearch。

Elastic官网:https://www.elastic.co/cn/

Elastic有一条完整的产品线及解决方案:Elasticsearch、Kibana、Logstash等,前面说的三个就是大家常说的ELK技术栈。

Elasticsearch(官网:https://www.elastic.co/cn/products/elasticsearch )是Elastic Stack 的核心技术。详细介绍参考官网

Elasticsearch具备以下特点:

分布式,无需人工搭建集群(solr就需要人为配置,使用Zookeeper作为注册中心)
Restful风格,一切API都遵循Rest原则,容易上手近实时搜索,数据更新在Elasticsearch中几乎是完全同步的。

二. 基础环境

CentOS8.0、jdk1.8

三. 安装步骤

1. 创建用户

[root@hecs-292215 ~]# groupadd es
[root@hecs-292215 ~]# useradd -g es es
[root@hecs-292215 ~]# passwd es
Changing password for user es.
New password: 
BAD PASSWORD: The password fails the dictionary check - it is too simplistic/systematic
Retype new password: 
Sorry, passwords do not match.
passwd: Authentication token manipulation error
[root@hecs-292215 ~]# passwd es
Changing password for user es.
New password: 
BAD PASSWORD: The password fails the dictionary check - it is too simplistic/systematic
Retype new password: 
passwd: all authentication tokens updated successfully.
[root@hecs-292215 ~]# 

2. 创建目录 

[root@hecs-292215 ~]# su es
[es@hecs-292215 root]$ cd ~
[es@hecs-292215 ~]$ pwd
/home/es
[es@hecs-292215 ~]$ ls
[es@hecs-292215 ~]$ cd es
bash: cd: es: No such file or directory
[es@hecs-292215 ~]$ mkdir elasticsearch
[es@hecs-292215 ~]$ ls
elasticsearch
[es@hecs-292215 ~]$ ls -l
total 4
drwxrwxr-x 2 es es 4096 Nov 21 14:52 elasticsearch
[es@hecs-292215 ~]$ 

3. 上传软件包

[es@hecs-292215 ~]$ ls
elasticsearch
[es@hecs-292215 ~]$ cd elasticsearch/
[es@hecs-292215 elasticsearch]$ ls
elasticsearch-7.12.0-linux-x86_64.tar.gz
[es@hecs-292215 elasticsearch]$ java -version
java version "1.8.0_341"
Java(TM) SE Runtime Environment (build 1.8.0_341-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.341-b10, mixed mode)
[es@hecs-292215 elasticsearch]$ 

 4. 解压

tar -zxvf elasticsearch-7.12.0-linux-x86_64.tar.gz

      

 5. 切换root用户修改配置

vi /etc/security/limits.conf
末尾新增下面四行:(修改后自动生效)
es soft nofile 65536
es hard nofile 65536
es soft nproc 4096
es hard nproc 4096

 vi /etc/sysctl.conf

 末尾新增下面一行:(修改后执行sysctl -p生效)

 vm.max_map_count=262144

6. 切换es用户修改如下配置

vim /home/es/elasticsearch/elasticsearch-7.12.0/config/elasticsearch.yml

 修改如下7个配置:

cluster.name: CollectorDBCluster

path.data: /data/elasticsearch/data

path.logs: /data/elasticsearch/logs

network.host: 10.153.61.71

http.port: 9200

node.name: node-1

cluster.initial_master_nodes: ["node-1"]

注意:一定要将elasticsearch.yml中的#cluster.initial_master_nodes: ["node-1","node-2"]注释去掉,并将“node-2”去掉

各配置项含义:
cluster.name    集群名称,各节点配成相同的集群名称。
node.name       节点名称,各节点配置不同。
node.master     指示某个节点是否符合成为主节点的条件。
node.data       指示节点是否为数据节点。数据节点包含并管理索引的一部分。
path.data       数据存储目录。
path.logs       日志存储目录。
bootstrap.memory_lock           内存锁定,是否禁用交换。
bootstrap.system_call_filter    系统调用过滤器。
network.host    绑定节点IP。
http.port       端口。
discovery.zen.ping.unicast.hosts    提供其他 Elasticsearch 服务节点的单点广播发现功能。
discovery.zen.minimum_master_nodes  集群中可工作的具有Master节点资格的最小数量,官方的推荐值是(N/2)+1,其中N是具有master资格的节点的数量。
discovery.zen.ping_timeout          节点在发现过程中的等待时间。
discovery.zen.fd.ping_retries       节点发现重试次数。
http.cors.enabled                   是否允许跨源 REST 请求,用于允许head插件访问ES。
http.cors.allow-origin              允许的源地址。
[es@hecs-292215 config]$ vim jvm.options

 Elasticsearch基于Lucene的,而Lucene底层是java实现,因此我们需要配置jvm参数。

编辑jvm.options

修改默认配置:-Xms1g -Xmx1g(此处可选择不修改)

7. 创建数据存储目录和日志存储目录 

8. 启动 

后台启动:

[es@hecs-292215 elasticsearch]$ ls -l
total 319836
drwxrwxr-x 2 es   es        4096 Nov 21 15:44 data
drwxr-xr-x 9 es   es        4096 Mar 18  2021 elasticsearch-7.12.0
-rw-r--r-- 1 root root 327497331 Nov 21 15:03 elasticsearch-7.12.0-linux-x86_64.tar.gz
drwxrwxr-x 2 es   es        4096 Nov 21 15:44 logs
[es@hecs-292215 elasticsearch]$ cd elasticsearch-7.12.0
[es@hecs-292215 elasticsearch-7.12.0]$ ls
bin  config  jdk  lib  LICENSE.txt  logs  modules  NOTICE.txt  plugins  README.asciidoc
[es@hecs-292215 elasticsearch-7.12.0]$ .cd bin
bash: .cd: command not found
[es@hecs-292215 elasticsearch-7.12.0]$ ls
bin  config  jdk  lib  LICENSE.txt  logs  modules  NOTICE.txt  plugins  README.asciidoc
[es@hecs-292215 elasticsearch-7.12.0]$ cd bin
[es@hecs-292215 bin]$ ls
elasticsearch           elasticsearch-croneval       elasticsearch-migrate        elasticsearch-setup-passwords     elasticsearch-syskeygen  x-pack-watcher-env
elasticsearch-certgen   elasticsearch-env            elasticsearch-node           elasticsearch-shard               elasticsearch-users
elasticsearch-certutil  elasticsearch-env-from-file  elasticsearch-plugin         elasticsearch-sql-cli             x-pack-env
elasticsearch-cli       elasticsearch-keystore       elasticsearch-saml-metadata  elasticsearch-sql-cli-7.12.0.jar  x-pack-security-env
[es@hecs-292215 bin]$ ./elasticsearch -d

 查看启动日志:  cat /home/es/elasticsearch/logs/elasticsearch.log

9. 开放9200端口

[root@hecs-292215 ~]# firewall-cmd --list-ports
8848/tcp
[root@hecs-292215 ~]# firewall-cmd --zone=public --add-port=9200/tcp --permanent
success
[root@hecs-292215 ~]# systemctl restart firewalld.service
[root@hecs-292215 ~]# firewall-cmd --list-ports
8848/tcp 9200/tcp
[root@hecs-292215 ~]# 

 10. 访问页面会显示版本号和一些配置信息

curl http://ip:9200

搭建完毕!

备注:

1.查找ES进程
ps -ef | grep elastic
2.杀掉ES进程
kill -9 2382(进程号)
3.重启ES
elasticsearch -d (常驻)

然后使用./bin/elasticsearch -d 后台启动elasticsearch,去掉-d则是前端启动elasticsearch
 

如果涉及jdk版本的错误:

因为自己配置了环境变量JAVA_HOME,而ElasticSearch就是用了这个环境变量对应的java来运行,即发现jdk版本不对,另外还warning,JAVA_HOME环境变量已经弃用了,使用ES_JAVA_HOME代替: 

因为ElasticSearch包中包含了JDK,所以我们可以直接使用,有两种使用办法:

1、添加环境变量ES_JAVA_HOME指向ElasticSearch包中包含了JDK目录

2、修改bin/elasticsearch-env中代码,我们注释掉JAVA_HOME部分的判断:

猜你喜欢

转载自blog.csdn.net/Genius_zhu/article/details/127964392