elasticsearch安装启动及springboot集成记录
项目地址:https://gitee.com/libeimaningg/beizhilib
一、前提环境
-
ElasticSearch是基于lucence开发的,也就是运行需要java jdk支持。所以要先安装并配置JAVA环境变量。
-
安装node环境,网址:Node.js — Download Node.js® 下载Windows版msi的,下载完直接安装,一直确定
-
由于ElasticSearch 5.x 往后依赖于JDK 1.8的,所以现在下载JDK 1.8或者更高版本。
-
es从7.17版本以后不再支持jdk1.8了(7.17依然支持),需要进行JDK的版本升级,或者降低es的版本。否则在启动elasticsearch.bat时会报错:warning: ignoring JAVA_HOME=/home/jdk/jdk1.8.0_281; using bundled JDK
-
本次选用的是ElasticSearch7.17.6版本,Kibana也需要对应一致的7.17.6版本,Jdk17,springboot3.4.3,依赖spring-boot-starter-data-elasticsearch需要和springboot对应的3.4.0版本
二、安装ElasticSearch
ElasticSearch(简称es)是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,可以几乎实现实时的存储、检索数据;本身扩展性很好可以扩展到上百台服务器上,处理PB级别(大数据时代)的数据。基于restful API接口。ElasticSearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。构建在全文检索开源软件Lucene之上的ElasticSearch,目的是通过简单的RestFul APi来隐藏Lucene的复杂性,从而让全文搜索变得更加简单,不仅能对海量规模的数据完成分布式检索与检索,还能提供数据聚合分析。
前期可以把ElasticSearch看作成一个数据库,ElasricSearch数据库中有索引、文档、文档记录。对应的是:库、表、记录
1、下载地址
https://www.elastic.co/cn/downloads/elasticsearch

2、解压

3、进入bin目录下,双击执行elasticsearch.bat

看到started说明启动成功:

打开浏览器输入 http://localhost:9200 ,如图:

三、安装可视化界面ElasticSearch-head插件
就把es当作一个数据库!(可以建立索引(库),文档(库中的数据)) ·这个header我们就把它当做数据展示工具!我们后面所有的查询,Kibana来做。这个es head我们就把他当作数据展示工具!不建议在这里写SQL
1、安装grunt
grunt是一个很方便的构建工具,可以进行打包压缩、测试、执行等等的工作,5.x里之后的head插件就是通过grunt启动的。因此需要安装grunt.
npm install -g grunt-cli
出现出现 “npm ERR! code CERT_HAS_EXPIRED” 错误可以尝试手动设置registry为淘宝镜像或者其他镜像源,如下:
npm config set registry https://registry.npmmirror.com
查看版本号 grunt -version

2、下载head插件
(1)下载网址:https://github.com/mobz/elasticsearch-head

(2)解压:

(3)进入head文件夹下,执行命令:npm install (此处是为安装进行安装pathomjs)

出现下图即可成功:

(4)安装完成之后npm run start或grunt server,启动head插件

(5)修改es使用的参数.编辑elasticsearch.yml文件


增加新的参数,这样head插件可以访问es
http.cors.enabled: true
http.cors.allow-origin: "*"
@注意,设置参数的时候:后面要有空格!
(6)修改完配置将es重启,浏览器访问 http://localhost:9100

到此,Elasticsearch和ElasticSearch-head已经装好了。
四、ElasticSearch安装为Windows服务
cmd 进入ElasticSearch的bin目录下执行: elasticsearch-service.bat install

再查看电脑服务es已经存在了:

elasticsearch-service.bat后面还可以执行这些命令
install: 安装Elasticsearch服务
remove: 删除已安装的Elasticsearch服务(如果启动则停止服务)
start: 启动Elasticsearch服务(如果已安装)
stop: 停止服务(如果启动)
manager:启动GUI来管理已安装的服务
五、Kibana安装与搭建
Kibana是一个开源的分析与可视化平台,设计出来用于和Elasticsearch一起使用的。可以用kibana搜索、查看存放在Elasticsearch中的数据。Kibana与Elasticsearch的交互方式是各种不同的图表、表格、地图等,直观的展示数据,从而达到高级的数据分析与可视化的目的。
(1)下载网址:
https://www.elastic.co/downloads/past-releases#kibana
注意:kibana 版本要和Es 一致
版本对应关系:https://www.elastic.co/cn/support/matrix#matrix_compatibility
(2)解压后启动Kibana:
双击kibana.bat启动(Kibana需要依赖于ElasticSearch,ELasticSearch需要开启)

访问测试Kibana,默认访问端口是 5601:http://localhost:5601/
如图:代表启动成功

(3)汉化Kibana
汉化包位置:

配置汉化包:在kibana.yml文件中添加i18n.locale: "zh-CN":


然后重启Kibana测试。如图,汉化成功:

六、elasticsearch安全认证
在 Elasticsearch 7.17.6 版本中,默认情况下 没有启用安全认证,不开启 用户名/密码认证,直接访问 HTTP API 无需认证(例如 http://localhost:9200 ) 。8.0 及以上版本在首次安装完成后会自动启用安全功能,并生成默认的账号密码。
1、elasticsearch启用认证
7.17.6 属于 7.x 的最终版本,已内置基础的安全功能(无需额外安装 X-Pack)。
只需在elasticsearch.yml文件中配置:
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true


然后重启Elasticsearch,并进入bin目录下,执行elasticsearch-setup-passwords interactive,按提示依次为elastic、apm_system、kibana_system、logstash_system、beats_system、remote_monitoring_user设置密码:

然后访问http://localhost:9200/ 进行验证,如图:启用认证后,默认超级用户为 elastic,密码为刚刚设置的。

输入完成后能正常登录:

2、Kibana同步配置
使用了Kibana还需同步配置kibana.yml:
elasticsearch.username: "elastic"
elasticsearch.password: "123456"

最后再重启kibana,能够正常访问。
3、elasticsearch-head同步配置
在elasticsearch.yml还需添加配置:
http.cors.allow-headers: Authorization,X-Requested-With,Content-Length,Content-Type

然后重启elasticsearch和elasticsearch-head,在访问elasticsearch-head时在url路径添加账户和密码,如:http://localhost:9100/?auth_user=elastic&auth_password=123456

七、springboot集成elasticsearch
1、相关配置
(1)springboot版本:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.4.3</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
(2)添加依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
<version>3.4.0</version>
</dependency>
(3)添加注解:
@EnableElasticsearchRepositories(basePackages = "org.yaoyao.yaoyaobiz.service.repository")
//basePackages路径为继承ElasticsearchRepository的接口的包
没有注解会扫描不到类,出现Field sysUserRepository in org.yaoyao.yaoyaobiz.service.impl.SysUserServiceImpl required a bean of type 'org.yaoyao.yaoyaobiz.service.repository.SysUserRepository' that could not be found.错误
(4)yml文件配置
未启用认证可以不设置账号密码
spring:
elasticsearch:
uris: http://localhost:9200
# username: elastic
# password: 123456
2、继承ElasticsearchRepository的接口
public interface SysUserRepository extends ElasticsearchRepository<SysUser, Long> {
}
3、具体使用
(1)实体类:
主要注解:
- @Document:作用在类上,标记实体类为文档对象。 indexName(索引名称,相当于数据库的表名称)
- @Id:作用在成员变量上,标记一个字段作为id主键。 在Elasticsearch中,文档ID是唯一的,用于标识文档。
- @Field:定义Java对象属性与Elasticsearch文档字段之间的映射关系。

(为节省时间只给两个字段加了)
(2)Controller层:
@RestController
@Slf4j
@RequestMapping("/system/repository")
public class RepositoryController {
@Autowired
private SysUserService sysUserService;
@PostMapping("/save")
public RestResult save(@RequestBody UserDto user) throws Exception {
sysUserService.saveRepository(user);
return new RestResult<>(RestResult.SUCCESS_CODE, "新增成功");
}
}
(3)实现层:
@Autowired
private SysUserRepository sysUserRepository;
@Override
public void saveRepository(UserDto user) {
SysUser sysUser = new SysUser();
BeanUtils.copyProperties(user, sysUser);
SysUser save = sysUserRepository.save(sysUser);
}
(4)测试:


参考文章:https://blog.csdn.net/qq_69683957/article/details/131349346

浙公网安备 33010602011771号