elasticsearch搜索引擎的搭建注意事项

4 篇文章 0 订阅

Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。充分利用Elasticsearch的水平伸缩性,能使数据在生产环境变得更有价值。Elasticsearch 的实现原理主要分为以下几个步骤,首先用户将数据提交到Elasticsearch 数据库中,再通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据,当用户搜索数据时候,再根据权重将结果排名,打分,再将返回结果呈现给用户。

1、下载及安装

下载安装包:Download Elasticsearch | Elastic

可以根据自己使用的操作系统下载相应的版本。建议使用压缩包版,部署更灵活。我当前下载的是elasticsearch v7.10.0版本,所以就以此版本为例介绍配置和使用情况。

安装指引:Installing Elasticsearch | Elasticsearch Guide [7.10] | Elastic

2、配置

在配置文件./config/elasticsearch.yml中配置搜索引擎:

# 集群名称
cluster.name: my-application
# 当前节点名
node.name: node-1
# 数据存放路径,一定要放置在程序安全目录以外的地方,以防止数据丢失。
path.data: /path/to/data
# 日志存放路径
path.logs: /path/to/logs
# 设置当前节点所在服务器IP地址
network.host: 192.168.0.1
# 设置当前节点对应服务http端口
http.port: 9200
# 集群主节点,启动时使用,若仅有一个节点,此项可以不设置
cluster.initial_master_nodes: ["node-1", "node-2"]
# 默认情况下,当缓存超过可用内存时,会在swap之间切换,但切换会影响相应速度。
bootstrap.memory_lock: true

# 若需要权限验证,则开启下面的设置,否则不用开启
#xpack.security.enabled: true
#xpack.security.authc.accept_default_password: true

v7.10.0版本建议使用jre 11以上的版本,若本机使用的是低版本,比如jre8,则可以修改环境设置命令文件elasticsearch-env,由于elasticsearch内置jre v11,可以切换到内置的jre.

# now set the path to java
if [ ! -z "$JAVA_HOME" ]; then
  JAVA="$JAVA_HOME/bin/java"
  JAVA_TYPE="JAVA_HOME"
else
  if [ "$(uname -s)" = "Darwin" ]; then
    # macOS has a different structure
    JAVA="$ES_HOME/jdk.app/Contents/Home/bin/java"
  else
    JAVA="$ES_HOME/jdk/bin/java"
  fi
  JAVA_TYPE="bundled jdk"
fi

手动启动命令:$ES_HOME/bin/elasticsearch -d

若服务器支持systemd服务,在/usr/lib/systemd/system/下创建服务启动配置文件: touch elasticsearch.service

配置如下:

[Unit]
Description=elasticsearch Server

[Service]
Type=simple
WorkingDirectory=/opt/elasticsearch
ExecStart=/opt/elasticsearch/bin/elasticsearch -d
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
Restart=no
TimeoutSec=1min
LimitNOFILE=65535
LimitMEMLOCK=infinity
User=es
Group=es

[Install]
WantedBy=default.target

执行启动命令:

# 启用修改内容
systemctl daemon-reload
# 开机自启动
systemctl enable elasticsearch.service
# 启动服务
systemctl start elasticsearch.service
# 检查启动状态
systemctl status elasticsearch.service
# 查看失败日志
journalctl -u elasticsearch.service

启动失败提醒:Caused by: java.lang.IllegalArgumentException: unknown setting [cluster.initial_master_modes] please check that any required plugins are installed, or check the breaking changes documentation for removed settings

解决方案:修改配置文件elasticsearch.yml,注释掉cluster.initial_master_modes

3、分词器插件

下载汉语分词器插件:elasticsearch-analysis-ik,注意版本需要与elasticsearch版本一致。

代码地址:GitHub - infinilabs/analysis-ik: 🚌 The IK Analysis plugin integrates Lucene IK analyzer into Elasticsearch and OpenSearch, support customized dictionary.

命令行安装:

./elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.10.0/elasticsearch-analysis-ik-7.10.0.zip

IK分词器有两种分词模式:ik_max_word和ik_smart模式。

ik_max_word: 会将文本做最细粒度的拆分,比如会将“中华人民共和国国歌”拆分为“中华人民共和国,中华人民,中华,华人,人民共和国,人民,人,民,共和国,共和,和,国国,国歌”,会穷尽各种可能的组合,适合 Term Query;

ik_smart: 会做最粗粒度的拆分,比如会将“中华人民共和国国歌”拆分为“中华人民共和国,国歌”,适合 Phrase 查询。

两种分词器使用的最佳实践是:索引时用ik_max_word,在搜索时用ik_smart。即:索引时最大化的将文章内容分词,搜索时更精确的搜索到想要的结果。

分词器测试

使用Postman进行分词器测试。

http post: http://localhost:9200/_analyze

http请求头设置:Content-Type:application/json

4、设置用户名密码

在生产环境下,为了保证数据安全性,需要设置用户名及密码。

首先开启配置文件elasticsearch.yml中的安全性设置。

#启用用户验证
xpack.security.enabled: true
xpack.security.authc.accept_default_password: true
xpack.security.transport.ssl.enabled: true

设置用户密码命令如下,根据提醒,设置每个用户的密码。

elasticsearch-setup-passwords interactive

若需要修改密码,可以通过以下命令设置:

./elasticsearch-reset-password --username 用户名 -i

也可以通过程序接口设置。

通过命令设置参考:

Change passwords API | Elasticsearch Guide [7.10] | Elastic

重置elasticsearch的超级管理员密码 - 简书

java修改密码代码如下:

        ChangePasswordRequest request = new ChangePasswordRequest(username,password.toCharArray(), RefreshPolicy.IMMEDIATE);
        client.security().changePassword(request, RequestOptions.DEFAULT);

5、收尾

elasticsearch的安装配置到此结束,后面用到高级用法会继续补充。另外后续会添加elasticsearch在spring framework中的应用。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WalsonTung

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值