一、简介
Lucene是apache软件基金会4 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎。
Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎, 基于RESTful web接口。Elasticsearch是用 Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。Elasticsearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。官方客户端在 Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和许多其他语言中都是可用的。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次 是Apache Solr,也是基于Lucene。
二、安装
ElasticSearch有各个平台的版本,在实际的开发过程中使用较为广泛的也是Linux版本的,因此我们这里主要使用Linux版,直接解压缩即可。
# 通过官方地址下载
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.9.0-linux-x86_64.tar.gz
# 解压
tar -zxvf elasticsearch-7.9.0-linux-x86_64.tar.gz -C /home
安装(这里我安装在我的home目录下)
解压(解压在home目录下)
三、配置
关于ElasticSearch的配置有很多,下面我主要罗列了一些主要的配置
1. Elasticsearch和JDK版本对应
由于我安装的是elasticsearch-7.9.0版本所以可以使用它内置的JDK,相关版本对应如下
Elasticsearch版本 | JDK版本 |
Elasticsearch 5 | JDK 8以上版本 |
Elasticsearch 6.5 | 开始支持 JDK 11 |
Elasticsearch 7.0 | 开始内置 JDK环境 |
这里要注意:很多朋友在Linux机器上安装了JDK的版本,例如我自己装的是JDK1.8,直接启动ElasticSearch服务的话会优先搜索Linux本地的JDK使用,显然JDK1.8和elasticsearch-7.9.0版本是不适配的,这里我们通过修改配置文件的方式让它使用elasticsearch-7.9.0自带的JDK。
使用ElasticSearch内置 JDK(注释第39,40,41,42,50行),注释掉对本地JDK的检测使用。
vi /home/elasticsearch-7.9.0/bin/elasticsearch-env
2. 创建新用户
ElasticSearch为了安全起见,默认不允许以root用户启动,所以要使用它我们还得创建一个新用户,这里我创建一个名为elasticsearch方便标识这个用户的功能。
# 添加用户
adduser elasticsearch
# 为elasticsearch用户设置密码
passwd elasticsearch
123456
3. 修改ElasticSearch所属的用户和用户组
# -R 递归修改elasticsearch-7.9.0下所有文件所属的用户和用户组
chown -R elasticsearch:elasticsearch /home/elasticsearch-7.9.0
4. 配置ElasticSearch需要的硬件和软件参数
# 修改打开的最大文件数和最大进程数
vi /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
* soft nproc 4096
* hard nproc 4096
# 修改es拥有的内存数(调大)
vi /etc/sysctl.conf
vm.max_map_count=655360
# 查看配置生效
sysctl -p
修改打开的最大文件数和最大进程数
修改es拥有的内存数(调大)
查看配置是否生效
5. 设置切换到普通用户利用sudo执行root权限的命令免密码输入
# 添加写权限
chmod +w /etc/sudoers
# 编辑
vi /etc/sudoers
# 针对elasticsearch用户免密
elasticsearch ALL=(ALL) NOPASSWD: ALL
%admin ALL=(ALL) NOPASSWD: ALL
切换到elasticsearch用户,如下免去切换用户时输入密码的流程
# 切换用户
su elasticsearch
6. 配置外部任何机器都可访问ElasticSearch服务
cd /home/elasticsearch-7.9.0/config
vi elasticsearch.yml
# 配置外部任何机器都可访问
network.host: 0.0.0.0(55行)
7. 集群配置
如果需要搭建集群,还需要对节点进行配置,仍然是在config文件中
# 配置节点名称
node.name: node-1(23行)
#初始化节点
cluster.initial_master_nodes: ["node-1"](24行)
四、开放端口
(学习期间可以禁用掉LInux的防火墙,实际开发过程中只能通过开放端口的方式,运营商服务器上的端口和自己服务器的端口都需开放)。
# 开发端口
sudo firewall-cmd --zone=public --add-port=9200/tcp --permanent
# 重启防火墙服务
sudo systemctl restart firewalld.service
# 重新加载防火墙
sudo firewall-cmd --reload
# 查看端口是否开放
sudo firewall-cmd --list-ports
五、启动
访问http://192.168.204.99:9200成功,说明启动成功。
这里的地址是Linux服务器的地址+ElasticSearch的端口
cd /home/elasticsearch-7.9.0/bin
# 前台启动,占用窗口
./elasticsearch
# 后台启动-d (daemon)
./elasticsearch -d