天天看点

Linux安装ElasticSearch及基础配置

作者:编程经验分享

今天看了一下自己的博客网站,发现内容越来越多,搜索内容时无法全文检索,体验极差。

对于这个问题我最先想到的就是【ElasticSearch】数据库简称ES,全文检索这一块ES是目前做的最好的一个了。其次想到的就是MySQL自带的【n-gram模型】,这个模型也可以做全文检索,但这会导致数据库压力过大,只适合少量用户的场景,而且不支持多表全文检索,缺点实在太多,最终还是选择了ES来做全文检索。

n-gram模型

在讲解ES之前我们还是简单的介绍一下MySQL自带的n-gram模型的使用。

首先我们需要在表上面创建全文检索索引:

# 以修改表的形式创建全文索引
ALTER TABLE 表名 ADD FULLTEXT INDEX 索引名称(字段名,字段名...) WITH PARSER ngram;

# 创建索引
CREATE FULLTEXT INDEX 索引名称 ON 表名(索引字段,字段名...) WITH PARSER ngram;           

通过全文检索查询数据

SELECT * FROM 表名 WHERE MATCH(字段名,字段名...) AGAINST('待查询的关键字');           

全文检索还有一个全局配置项【ngram_token_size】,这个主要影响中文及英文的内容,如果全文检索主要内容为中文建议使用默认的【ngram_token_size=2】即可。如果是英文,可以在MySQL配置文件中改为1,【ngram_token_size=2】时英文内容搜索将无效。

MySQL全文检索基础使用就这么多了。

ElasticSearch数据库

这里以ElasticSearch最新版【8.8.1】为例,给大家讲讲最新版的安装、相关配置及基础使用。注意我们安装的是 ES8.8.1 版本,这个版本自带一个JVM环境,ES从7开始就自动了一个JVM环境,ES7之前的版本需要我们自己安装JVM环境

1 下载安装

我们可以直接进入官网下载源码,官网已经提供了yum及rpm安装教材,这个教材还是比较详细的,大家可以参照一下。我这里以源码的形式进行安装:

1.1 在/usr/local/目录下创建ElasticSearch的安装目录

mkdir elastic           

1.2 进入ElasticSearch安装目录并下载源码

# 进入安装目录
cd elastic
# 下载源码
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.8.1-linux-x86_64.tar.gz           

1.3 下载解压缩源码

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

1.4 进入项目根目录

解压缩后生成 elasticsearch-8.8.1 目录,这里面的就是elasticsearch源码了。

cd elasticsearch-8.8.1/           

2 ElasticSearch基础配置

elastic的主要配置文件在根目录的【config】目录下,总共有以下三个配置文件:

  • elasticsearch.yml:主要是es相关配置
  • jvm.options:jvm相关配置
  • log4j2.properties:日志相关配置

3 启动ElasticSearch

最新版本的ES不允许我们直接使用root用户运行,所以在启动ES之前我们还需要创建一个ES使用的系统用户

# 创建用户组
groupadd esgroup

# 创建用户并指定其用户组
useradd -g esgroup es

# 设置es密码
passwd es 回车设置密码           

给新用户赋予ES目录的权限:

sudo chown -R es:esgroup /usr/local/elastic/           

注意:后续操作中如果出现【es is not in the sudoers file. This incident will be reported】或者【Kibana should not be run as root. Use --allow-root to continue】及【Exception in thread "main" java.nio.file.AccessDeniedException】都是因为 ES8 不允许使用 root 用户允许启动

kibana运行时启动需要指定参数才能以root用户运行:bin/kibana --allow-root

除此之外,最新版本的ElasticSearch默认情况下启用了用户密码验证,作为初学者可以关闭验证。而且最新版启动后界面上没有显示监听的端口,我们可以自己在elasticsearch.yml文件中指定。

3.1 关闭用户密码验证及指定监听端口

修改【config/elasticsearch.yml】文件中的【xpack.security.enabled】配置项为false即可

# 监听端口
http.port: 9200

# 关闭用户密码验证
xpack.security.enabled: false           

3.2 启动ElasticSearch

上面说过elasticsearch 8 之后不允许以 root 用户启动,所以我们需要切换到之前创建的【es】用户下,如果已经切换到【es】用户可以忽略:

su es           

现在我们可以启动elasticsearch了:

./bin/elasticsearch           

如果需要以守护进程的方式启动,只需要加上 -d

如果启动后如果有【Unable to locate appender "rolling_old" for logger config "root"】错误信息,主要原因是我们没有修改 【config/elasticsearch.yml】文件中的日志目录,默认的日志目录不存在或者说当前启动ES 的用户没有权限。我们只要修改【path.logs】选项为【/usr/local/elastic/elasticsearch-8.8.1/logs】即可

启动后,我们就可以通过IP+端口的形式访问ElasticSearch了:

http://127.0.0.1:9200/           

上面的连接打开后如下图所示,表示启动成功:

Linux安装ElasticSearch及基础配置

4 安装管理后台Kibana

ElasticSearch提供了类似phpMyAdmin一样的网页版本的管理后台。安装管理后台比较简单,回到【/usr/local/elastic】目录下,下载源码并解压缩,之后进入源码目录启动管理后台即可。具体步骤如下:

4.1 下载管理后台代码

wget https://artifacts.elastic.co/downloads/kibana/kibana-8.8.1-linux-x86_64.tar.gz           

4.2 解压缩并进入源码目录

# 解压缩
tar -zxvf kibana-8.8.1-linux-x86_64.tar.gz

# 进入解压缩后的源码目录
cd kibana-8.8.1/           

4.3 kibana配置目录

kibana配置文件都在源码跟目录下的【config】文件夹下面,其中【kibana.yml】就是主要配置文件。如果启动后无法通过外网访问,可能是允许访问IP段的问题或者是防火墙未开放kibana监听的端口,学些阶段大家可以关闭防火墙。

# kibana监听的端口
server.port: 5601

# 允许访问的IP段,我这里测试使用,允许所有IP段访问,正式环境可以改成指定IP
server.host: "0.0.0.0"           

4.4 启动kibana

bin/kibana           
如果在root用户下,可以使用【bin/kibana --allow-root】命令启动,--allow-root参数允许使用root用户运行

启动成功之后我们就可以通过IP+端口的方式访问ElasticSearch管理后台,默认端口是5601,完整链接如下:

http://localhost:5601           

有遗漏或者不对的可以在我的公众号留言哦

继续阅读