java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Linux中ES安装

Linux中Elasticsearch的安装详细步骤

作者:十一的学习笔记

这篇文章主要介绍了Linux中Elasticsearch的安装详细步骤,Elasticsearch(ES)是一种分布式、可扩展的搜索和分析引擎,基于Lucene构建,它支持实时数据处理、全文搜索、实时分析等多种功能,需要的朋友可以参考下

一、ES是什么

1.1、ES概念介绍

ES(Elasticsearch)是一种基于Lucene的搜索服务器,具有实时分布式存储、搜索和分析引擎的功能。

Elasticsearch是一个高度可扩展的开源全文搜索和分析引擎,可以快速地对大数据进行存储、搜索和分析。它是基于Java开发的,作为Apache许可条款下的开放源码发布,成为流行的企业级搜索引擎。

ES不仅具备强大的搜索能力,还支持模糊查询和相关性搜索,这使得它在处理大量数据时表现出色。相对于传统数据库,ES能够更高效地进行模糊查询,因为它内部使用倒排索引(inverted index)结构,这种结构特别适用于快速的文本搜索。倒排索引将数据分词并建立索引,使得搜索时能够快速找到相关文档,而不是遍历整个数据集。

1.2、技术架构

ES的技术架构是一个高度可扩展的分布式系统,旨在处理大规模的数据搜索和分析任务。

ES的底层依赖于Lucene,这是一个高性能、全功能的搜索引擎库。然而,Lucene的使用门槛较高,需要开发者具备一定的信息检索知识,并且直接集成到应用程序中。为了简化这一过程,ES应运而生,它使用Java编写,内部采用Lucene进行索引和搜索,并提供一套简单的RESTful API供用户使用。

在ES的架构中,集群不需要依赖任何外部组件即可实现高可用性(HA)。集群中的节点通过自建的选举算法来选择master节点,无需额外的系统如Zookeeper。

1.2.1、Lucene介绍

Lucene是一个高性能、可扩展的开源Java库,用于实现全文检索和搜寻功能。

Lucene最初由Doug Cutting开发,他也是Hadoop的创始人之一。作为一个开源项目,Lucene主要由Apache软件基金会支持,并在Java开发社区中广泛使用。它提供了一个强大的应用程序接口(API),允许开发者在自己的应用程序中实现全文索引和搜索功能。

Lucene的核心功能包括全文搜索和索引建立,这两者是实现高效数据检索的基础。在全文搜索中,Lucene能够对非结构化数据进行快速查找和匹配,这得益于其内部使用的“倒排索引”结构。倒排索引是一种数据结构,通过将文档内容分词并建立索引,从而快速定位相关文档位置,而不需要遍历整个数据集。

关键词文章号[出现频率]出现位置
guangzhou1[2]3, 6

Lucene不仅提供强大的索引和搜索能力,还具有高扩展性。其索引结构主要采用FST(有限状态机)实现,这一结构具有查询速度快、内存占用少、结合内存和磁盘存储的优点。这使得Lucene能够支持大规模数据的检索,同时在内存利用率和查询速度上都有优异表现。

1.3、ES的工作原理

ES(Elasticsearch)的工作原理基于分布式、可扩展的架构和倒排索引机制,能够实现高效的数据存储和检索功能。

ES通过其分布式架构、倒排索引机制以及复杂的写入和查询流程,确保了数据的高效存储和快速检索。这种设计不仅提高了系统的可用性和稳定性,还带来了良好的扩展性和灵活的配置选项,适应了现代大数据环境下的各种复杂应用场景。

1.4、ES的适用场景

二、安装前的配置

2.1、创建普通用户

由于ES禁止使用root用户启动,需要创建一个普通用户来运行ES

[root@iZbp129gypomkv7w7deqpqZ ~]# groupadd elasticsearch
[root@iZbp129gypomkv7w7deqpqZ ~]# useradd esroot
[root@iZbp129gypomkv7w7deqpqZ ~]# passwd esroot 
Changing password for user esroot.
New password: 
BAD PASSWORD: The password contains the user name in some form
Retype new password: 
passwd: all authentication tokens updated successfully.
[root@iZbp129gypomkv7w7deqpqZ ~]# usermod -G elasticsearch esroot

在 在root ALL=(ALL) ALL一行下面添加esroot ALL=(ALL) ALL

[root@iZbp129gypomkv7w7deqpqZ /]# visudo 
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
esroot   ALL=(ALL)       ALL

2.2、调整文件描述符数量和虚拟内存

[root@iZbp129gypomkv7w7deqpqZ /]# ulimit -n 65536
[root@iZbp129gypomkv7w7deqpqZ /]# ulimit -u 4096

2.3、设置shell会话的资源限制(软限制和硬限制)

在文本最后添加下面两段代码

[root@iZbp129gypomkv7w7deqpqZ /]# vi /etc/security/limits.conf
shcms soft nofile 65536
shcms hard nofile 65536

2.4、增加虚拟内存的设置

添加vm.max_map_count=262144

[root@iZbp129gypomkv7w7deqpqZ /]# vi /etc/sysctl.conf
vm.swappiness = 0
kernel.sysrq = 1
vm.max_map_count=262144

net.ipv4.neigh.default.gc_stale_time = 120

# see details in https://help.aliyun.com/knowledge_detail/39428.html
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_announce = 2

# see details in https://help.aliyun.com/knowledge_detail/41334.html
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 1024
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_slow_start_after_idle = 0

2.5、使虚拟内存配置立即生效

[root@iZbp129gypomkv7w7deqpqZ /]# sysctl -p
vm.swappiness = 0
kernel.sysrq = 1
vm.max_map_count = 262144
net.ipv4.neigh.default.gc_stale_time = 120
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_announce = 2
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 1024
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_slow_start_after_idle = 0

三、ES安装

3.1、下载与解压

[root@iZbp129gypomkv7w7deqpqZ home]# mkdir software
[root@iZbp129gypomkv7w7deqpqZ software]# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.6.1-linux-x86_64.tar.gz
--2024-08-11 14:56:47--  https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.6.1-linux-x86_64.tar.gz
Resolving artifacts.elastic.co (artifacts.elastic.co)... 34.120.127.130, 2600:1901:0:1d7::
Connecting to artifacts.elastic.co (artifacts.elastic.co)|34.120.127.130|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 296454172 (283M) [application/x-gzip]
Saving to: ‘elasticsearch-7.6.1-linux-x86_64.tar.gz'

100%[================================================================================================================================================>] 296,454,172 6.65MB/s   in 37s    

2024-08-11 14:57:25 (7.56 MB/s) - ‘elasticsearch-7.6.1-linux-x86_64.tar.gz' saved [296454172/296454172]
[root@iZbp129gypomkv7w7deqpqZ software]# mkdir /opt/es
[root@iZbp129gypomkv7w7deqpqZ software]# ls /opt
es
[root@iZbp129gypomkv7w7deqpqZ software]# tar -zxvf elasticsearch-7.6.1-linux-x86_64.tar.gz -C /opt/es/
elasticsearch-7.6.1/
elasticsearch-7.6.1/lib/
elasticsearch-7.6.1/lib/elasticsearch-7.6.1.jar
elasticsearch-7.6.1/lib/elasticsearch-x-content-7.6.1.jar
elasticsearch-7.6.1/lib/elasticsearch-cli-7.6.1.jar
elasticsearch-7.6.1/lib/elasticsearch-core-7.6.1.jar
elasticsearch-7.6.1/lib/elasticsearch-secure-sm-7.6.1.jar
elasticsearch-7.6.1/lib/elasticsearch-geo-7.6.1.jar
elasticsearch-7.6.1/lib/lucene-core-8.4.0.jar

3.2、配置文件修改

[root@iZbp129gypomkv7w7deqpqZ /]# su - esroot
[esroot@iZbp129gypomkv7w7deqpqZ ~]$ 
[esroot@iZbp129gypomkv7w7deqpqZ ~]$ sudo mkdir -p /opt/es/elasticsearch-7.6.1/log
[sudo] password for esroot: 
[esroot@iZbp129gypomkv7w7deqpqZ ~]$ sudo mkdir -p mkdir -p /opt/es/elasticsearch-7.6.1/data
[esroot@iZbp129gypomkv7w7deqpqZ ~]$ ls /opt/es/elasticsearch-7.6.1/
bin  config  data  jdk  lib  LICENSE.txt  log  logs  modules  NOTICE.txt  plugins  README.asciidoc
[root@iZbp129gypomkv7w7deqpqZ ~]# cd /opt/es/elasticsearch-7.6.1/config
[root@iZbp129gypomkv7w7deqpqZ config]# ls
elasticsearch.yml  jvm.options  log4j2.properties  role_mapping.yml  roles.yml  users  users_roles
[root@iZbp129gypomkv7w7deqpqZ config]# rm -rf elasticsearch.yml
[root@iZbp129gypomkv7w7deqpqZ config]# ls
jvm.options  log4j2.properties  role_mapping.yml  roles.yml  users  users_roles
[root@iZbp129gypomkv7w7deqpqZ config]# vi elasticsearch.yml
[root@iZbp129gypomkv7w7deqpqZ config]# cat elasticsearch.yml 
cluster.name: my-cluster
node.name: my-node
path.data: /opt/es/elasticsearch-7.6.1/data
path.logs: /opt/es/elasticsearch-7.6.1/log
network.host: 0.0.0.0

jvm.options文件可以根据自己的实际情况修改配置:-Xms2g 是一个 Java 虚拟机(JVM)选项,用于设置Java堆的初始大小(最小值)。在这个例子中,初始堆大小被设置为 2GB(2048MB)。

3.3、依赖安装

ES的某些版本对JDK有特定要求,需要确保系统中JDK的版本与ES版本兼容。ES 7.x以上通常内置了JDK环境,不需要本地JDK支持。如果需要指定JDK版本,可以在ES的bin目录中修改elasticsearch脚本,设置正确的JAVA_HOME路径。

[root@iZbp129gypomkv7w7deqpqZ yum.repos.d]# vi CentOS-Base.repo 
[root@iZbp129gypomkv7w7deqpqZ yum.repos.d]# cat CentOS-Base.repo 
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirror.centos.org/centos/$releasever/os/$basearch/mirror.lst
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
baseurl=https://mirrors.aliyun.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

[updates]
name=CentOS-$releasever
enabled=1
failovermethod=priority
baseurl=http://mirrors.cloud.aliyuncs.com/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirrors.cloud.aliyuncs.com/centos/RPM-GPG-KEY-CentOS-7

[extras]
name=CentOS-$releasever
enabled=1
failovermethod=priority
baseurl=http://mirrors.cloud.aliyuncs.com/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://mirrors.cloud.aliyuncs.com/centos/RPM-GPG-KEY-CentOS-7
[root@iZbp129gypomkv7w7deqpqZ yum.repos.d]# yum clean all
Loaded plugins: fastestmirror
Cleaning repos: base epel extras mysql-connectors-community mysql-tools-community mysql57-community updates
Cleaning up list of fastest mirrors
[root@iZbp129gypomkv7w7deqpqZ yum.repos.d]# yum makecache
Loaded plugins: fastestmirror
Determining fastest mirrors
[root@iZbp129gypomkv7w7deqpqZ /]# yum install java-11-openjdk-devel
[root@iZbp129gypomkv7w7deqpqZ /]# source /etc/profile
[esroot@iZbp129gypomkv7w7deqpqZ /]$ vi /etc/profile
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.91.x86_64
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin

3.4、启动ES服务

[esroot@iZbp129gypomkv7w7deqpqZ /]$ su esroot
[esroot@iZbp129gypomkv7w7deqpqZ /]$ cd /opt/es/elasticsearch-7.6.1/bin
[esroot@iZbp129gypomkv7w7deqpqZ /]$ ./elasticsearch

总结 

到此这篇关于Linux中Elasticsearch安装详细步骤的文章就介绍到这了,更多相关Linux中ES安装内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文