ElasticSearch工程级入门及结合SpringBoot的0到1实战

ElasticSearch工程级入门及结合SpringBoot的0到1实战

阅前须知

  1. 本文用于记录从0到1的SPB(springboot)结合es的基础流程,包括:

    1. es在linux(centos)环境下的搭建
      1. es中文分词IK插件的安装
      2. es可视化浏览工具的安装
      3. vscode连接及基础使用es
    2. SPB引入ES及基本ES业务代码编写
  2. 本文不会过多阐述SPB以及ES的知识和理论,工程部署过程中接触到的会稍微展开讲,故,如有疑惑请百度/Google查询详情,另,推荐阅读官网文档,由于SPB版本以及ES版本的更替,导致网上部分教程"老化",请注意对照自己实际部署版本以及参考文档的版本是否匹配

    ps: 官网有中文和英文文档,中文的es版本有点老,但是不影响理论层面的知识获取,工程开发层面的最好查阅你实际使用的es版本

  3. 若有侵权,请联系本人删除,thanks!

  4. 欢迎评论指正,本人也是边学边写的,有些思路可能是有更好的解决方案的.

1.环境

  1. 服务器ip:172.22.105.135(请注意根据实际情况修改)
  2. ES安装环境: centos7直装(非docker),单节点部署
  3. 开发环境: IDEA(SPB开发)+VsCode(ES的基础调试)

2.版本选择

  1. 本文使用SPB的Spring Data Elasticsearch库来进行es操作,所以在部署前先确定es的版本以及spb版本,确定依据请查阅下述地址

    https://docs.spring.io/spring-data/elasticsearch/docs/current/reference/html/#preface.versions

  2. 本文使用版本如下:

    • SPB: 2.3.4.RELEASE
    • es: 7.6.2

3.部署&开发

本文部分内容参考自: https://www.jianshu.com/p/1fbfde2aefa5

3.1.ES搭建步骤

# 由于本文环境之前使用jdk8,而es7.6.2需要jdk11,因此需要先卸载
# 卸载jdk8
rpm -qa | grep jdk
rpm -e --nodeps jdk1.8-1.8.0_261-fcs.x86_64
# 装jdk11
# jdk下载
# https://www.oracle.com/java/technologies/javase-jdk11-downloads.html
$ rpm -ivh jdk-11.0.8_linux-x64_bin.rpm
# 装es
$ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.6.2-linux-x86_64.tar.gz
$ tar -zxvf elasticsearch-7.6.2-linux-x86_64.tar.gz
# 安装位置请自行考虑,本文安装在opt文件夹下
$ mkdir /opt/elasticsearch
$ mv elasticsearch-7.6.2 /opt/elasticsearch/
# es该版本需要用elastic用户来操作不支持root,因此需要创建用户并赋予权限
$ useradd elastic
$ passwd elastic
# 密码
elastic
# 赋权
# chown [选项]... [所有者][:[组]] 文件...
$ chown -R elastic /opt/elasticsearch/
# 切换用户
$ su elastic
# 修改es配置文件
$ vim config/elasticsearch.yml
# 允许外部IP访问
network.host: 0.0.0.0
# 节点名称
node.name:node-1
# 把这个注释先放开,把自己这个节点写上就行
cluster.initial_master_nodes: ["node-1"]
# 配置完成,启动
$ ./bin/elasticsearch
# 访问http://ip:9200 可看到返回的es服务器json信息,即搭建成功
3.1.1报错&解决方案
P1:
ERROR: [2] bootstrap checks failed
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]
[2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
# 切回root修改两个系统文件,把限制调一下
#[1]: max file descriptors [65535] for elasticsearch process is too low, increase to at least [65536]
#编辑 /etc/security/limits.conf,追加以下内容;
* soft nofile 65536
* hard nofile 65536
#此文件修改后需要重新登录用户,才会生效


#[2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

#编辑 /etc/sysctl.conf,追加以下内容:
vm.max_map_count=655360
#保存后,执行:
$ sysctl -p

P2:
[2020-09-27T02:58:01,479][WARN ][o.e.c.c.ClusterFormationFailureHelper] [node-1] master not discovered yet, this node has not previously joined a bootstrapped (v7+) cluster, and this node must discover master-eligible nodes [node-1, node-2] to bootstrap a cluster: have discovered [{
   node-1}{
   MGp0W6AGTcGnitC7ECKqlA}{
   TflXmcZrQreidWzEkxiO0g}{
   10.10.10.7}{
   10.10.10.7:9300}{
   dilm}{
   ml.machine_memory=270252875776, xpack.installed=true, ml.max_open_jobs=20}]; discovery will continue using [127.0.0.1:9300, 127.0.0.1:9301, 127.0.0.1:9302, 127.0.0.1:9303, 127.0.0.1:9304, 127.0.0.1:9305, [::1]:9300, [::1]:9301, [::1]:9302, [::1]:9303, [::1]:9304, [::1]:9305] from hosts providers and [{
   node-1}{
   MGp0W6AGTcGnitC7ECKqlA}{
   TflXmcZrQreidWzEkxiO0g}{
   10.10.10.7}{
   10.10.10.7:9300}{
   dilm}{
   ml.machine_memory=270252875776, xpack.installed=true, ml.max_open_jobs=20}] from last-known cluster state; node term 0, last-accepted version 0 in term 0
# 把默认的master节点中删去node2
$ vim config/elasticsearch.yml
cluster.initial_master_nodes: ["node-1"]

p1解决参考: https://blog.csdn.net/feng12345zi/article/details/80367907

es配置文件解释: https://blog.csdn.net/chitu1920/article/details/100608374

3.2.IK分词器安装

如果你的项目需要搜索中文,就需要中文分词的插件,**ES原生的检索中文是相当于没有的,所以本文介绍IK的安装方法.注意IK也需要版本对应!

github: https://github.com/medcl/elasticsearch-analysis-ik

# 下载
$ wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.6.2/elasticsearch-analysis-ik-7.6.2.zip
# 进入项目根目录创建文件夹
$ mkdir /项目根目录/plugins/ik
# unzip -d 指定解压目录
$ unzip elasticsearch-analysis-ik-7.6.2.zip -d /opt/elasticsearch/elasticsearch-7.6.2/plugins/ik/
# 重启es,在启动过程中可以看到plugins的加载

3.3.ES的可视化工具ElasticHD安装

# 使用es的可视化工具
$ wget https://github.com/360EntSecGroup-Skylar/ElasticHD/releases/download/1.4/elasticHD_linux_amd64.zip
$ unzip elasticHD_linux_amd64.zip
$ chmod -R 777 ElasticHD
$ ./ElasticHD -p 0.0.0.0:9800
# 访问 http://ip:9800/

3.4.vscode的es插件安装

装这个的用意:

  1. 一开始还不太懂es的搜索机制啥的,也不知道是真的elasticHD有问题还是我在HD中query打的有问题,我发现我写的代码执行出来的搜索结果和HD中api执行的搜索结果不一致,让我怀疑HD年老失修了,所以我才寻求另一个调试工具
  2. vscode这个可以把搜索命令保存下来,方便一点

所以,vscode的插件是非必须的,请根据实际情况安装!

# 1.vscode中安装两个插件Elasticsearch for VSCode和Elasticsearch Developer tool
# 2.创建es工作目录,或者可以在你创建了spb项目之后,在spb的项目目录下面创建之后的文件
# 3.在工作目录中创建default.esenv文件,写入es的相关信息,这些可以在es根目录的config/elasticsearch.yml中可得
# 如本文信息如下: 
{
   
    "host":"http://172.22.105.135:9200",
    "name":"node-1"
}
# 4.输入完可以看到上面有ping xxx和set xxx as target,那么先ping,若ping通证明输入正确,接着就可以set了
# 5.在工作目录创建xxx.es(名字自取)
# 6.接着就可以在这个.es文件中写api代码了
GET /_search
{
   
	"query":{
   
		"math_all":{
   }
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值