利用springboot+elasticSearch,实现数据高效搜索,实战开发(一)

简介: 在2018年10月5日,一个做数据搜索服务的软件初创公司 Elastic,在纳斯达克上市。

一、介绍

在2018年10月5日,一个做数据搜索服务的软件初创公司 Elastic,在纳斯达克上市。

99.jpg而我们所熟悉的 ElasticSearch,正是 Elastic 公司最出名的产品之一,其中还包括有分布式日志解决方案 ELK(Elastic Search、Logstash、Kibana)、Beats、ECE等。

那 ElasticSearch 究竟是干啥的呢?

本质其实是一个基于 Lucene 开发的搜索服务器,它提供了一个基于 RESTful web 接口的分布式多用户能力的全文搜索引擎,能够达到实时搜索、稳定、可靠、快速、安装使用方便等特点。

同时,作为 Apache 许可条款下的开放源码,目前已经成为一种流行的企业级搜索引擎。

既然在企业开发中如此流行,肯定少不了 Springboot 的参与,今天我们就一起来探讨一下 SpringBoot 与 ElasticSearch 的整合,看看它是否真的如所介绍的那样优秀!

本文主要介绍分为以下几个部分:

  • 第一部分:环境准备,安装ElasticSearch,安装 ElasticSearch-head 插件可视化web界面
  • 第二部分:SpringBoot 整合 ElasticSearch 开发
  • 第三部分:CRUD 测试

二、ElasticSearch 安装

为了和真实环境一致,我们采用CentOS7来部署 ElasticSearch 服务。

建议把所需的安装包,手动从网上下载下来,因为服务器下载 ElasticSearch 安装包速度像蜗牛……,非常非常慢~~,可能是国内的网络原因吧!

登录https://www.elastic.co/cn/downloads/elasticsearch,选择相应的系统环境下载软件包,小编我采用的是CentOS,所以选择Linux环境。

100.jpg


2.1、安装JDK(已经安装过,可以跳过)

Elasticsearch 是用 Java 语言开发的,所以在安装之前,需要先安装一下JDK

yum -y install java-1.8.0-openjdk

查看java安装情况

java -version

101.jpg

2.2、安装ElasticSearch

进入到对应上传的文件夹,安装ElasticSearch

rpm -ivh elasticsearch-6.1.0.rpm

查找安装路径

rpm -ql elasticsearch

一般是装在/usr/share/elasticsearch/下。

2.3、设置data的目录

创建/data/es-data目录,用于elasticsearch数据的存放

mkdir -p /data/es-data

修改该目录的拥有者为elasticsearch

chown -R elasticsearch:elasticsearch /data/es-data
2.4、设置log的目录
mkdir -p /log/es-log

修改该目录的拥有者为elasticsearch

chown -R elasticsearch:elasticsearch /log/es-log
2.5、修改配置文件elasticsearch.yml
vim /etc/elasticsearch/elasticsearch.yml

修改如下内容:

#设置节点名称
cluster.name: my-es
#设置data存放的路径为/data/es-data
path.data: /data/es-data
#设置logs日志的路径为/log/es-log
path.logs: /log/es-log
#设置内存不使用交换分区,配置了bootstrap.memory_lock为true时反而会引发9200不会被监听,原因不明
bootstrap.memory_lock: false
#设置允许所有ip可以连接该elasticsearch
network.host: 0.0.0.0
#开启监听的端口为9200
http.port: 9200
#增加新的参数,为了让elasticsearch-head插件可以访问es (5.x版本,如果没有可以自己手动加)
http.cors.enabled: true
http.cors.allow-origin: "*"
2.6、启动elasticsearch

启动

systemctl start elasticsearch

查看状态

systemctl status elasticsearch

设置开机启动

systemctl enable elasticsearch

启动成功之后,测试服务是否开启

curl -X GET http://localhost:9200

返回如下信息,说明安装、启动成功了

102.jpg

同时也可以远程测试一下,如果网络被拒绝,检查防火墙是否开启

#查询防火墙状态
firewall-cmd --state

如果状态是active表示已经开启,可以将其关闭

#关闭防火墙
systemctl stop firewalld.service

如果不想开机启动,可以输入如下命令

#禁止firewall开机启动
systemctl disable firewalld.service

我们再来测试一下远程是否可以正常访问,结果如下:

103.jpg

已经可以正常访问了。

相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。  
相关文章
|
5月前
|
缓存 监控 前端开发
顺企网 API 开发实战:搜索 / 详情接口从 0 到 1 落地(附 Elasticsearch 优化 + 错误速查)
企业API开发常陷参数、缓存、错误处理三大坑?本指南拆解顺企网双接口全流程,涵盖搜索优化、签名验证、限流应对,附可复用代码与错误速查表,助你2小时高效搞定开发,提升响应速度与稳定性。
|
5月前
|
存储 Linux iOS开发
Elasticsearch Enterprise 9.1.5 发布 - 分布式搜索和分析引擎
Elasticsearch Enterprise 9.1.5 (macOS, Linux, Windows) - 分布式搜索和分析引擎
434 0
|
6月前
|
JSON 监控 Java
Elasticsearch 分布式搜索与分析引擎技术详解与实践指南
本文档全面介绍 Elasticsearch 分布式搜索与分析引擎的核心概念、架构设计和实践应用。作为基于 Lucene 的分布式搜索引擎,Elasticsearch 提供了近实时的搜索能力、强大的数据分析功能和可扩展的分布式架构。本文将深入探讨其索引机制、查询 DSL、集群管理、性能优化以及与各种应用场景的集成,帮助开发者构建高性能的搜索和分析系统。
459 0
存储 JSON Java
764 0
|
8月前
|
JSON Java 数据格式
Spring Boot返回Json数据及数据封装
在Spring Boot中,接口间及前后端的数据传输通常使用JSON格式。通过@RestController注解,可轻松实现Controller返回JSON数据。该注解是Spring Boot新增的组合注解,结合了@Controller和@ResponseBody的功能,默认将返回值转换为JSON格式。Spring Boot底层默认采用Jackson作为JSON解析框架,并通过spring-boot-starter-json依赖集成了相关库,包括jackson-databind、jackson-datatype-jdk8等常用模块,简化了开发者对依赖的手动管理。
763 3
|
10月前
|
存储 安全 Linux
Elasticsearch Enterprise 9.0 发布 - 分布式搜索和分析引擎
Elasticsearch Enterprise 9.0 (macOS, Linux, Windows) - 分布式搜索和分析引擎
427 0
|
10月前
|
存储 Linux iOS开发
Elasticsearch Enterprise 8.18 发布 - 分布式搜索和分析引擎
Elasticsearch Enterprise 8.18 (macOS, Linux, Windows) - 分布式搜索和分析引擎
385 0
|
12月前
|
JSON Java 数据格式
微服务——SpringBoot使用归纳——Spring Boot返回Json数据及数据封装——封装统一返回的数据结构
本文介绍了在Spring Boot中封装统一返回的数据结构的方法。通过定义一个泛型类`JsonResult<T>`,包含数据、状态码和提示信息三个属性,满足不同场景下的JSON返回需求。例如,无数据返回时可设置默认状态码"0"和消息"操作成功!",有数据返回时也可自定义状态码和消息。同时,文章展示了如何在Controller中使用该结构,通过具体示例(如用户信息、列表和Map)说明其灵活性与便捷性。最后总结了Spring Boot中JSON数据返回的配置与实际项目中的应用技巧。
900 0
|
12月前
|
JSON Java fastjson
微服务——SpringBoot使用归纳——Spring Boot返回Json数据及数据封装——使用 fastJson 处理 null
本文介绍如何使用 fastJson 处理 null 值。与 Jackson 不同,fastJson 需要通过继承 `WebMvcConfigurationSupport` 类并覆盖 `configureMessageConverters` 方法来配置 null 值的处理方式。例如,可将 String 类型的 null 转为 "",Number 类型的 null 转为 0,避免循环引用等。代码示例展示了具体实现步骤,包括引入相关依赖、设置序列化特性及解决中文乱码问题。
617 0
|
12月前
|
JSON Java fastjson
微服务——SpringBoot使用归纳——Spring Boot返回Json数据及数据封装——Spring Boot 默认对Json的处理
本文介绍了在Spring Boot中返回Json数据的方法及数据封装技巧。通过使用`@RestController`注解,可以轻松实现接口返回Json格式的数据,默认使用的Json解析框架是Jackson。文章详细讲解了如何处理不同数据类型(如类对象、List、Map)的Json转换,并提供了自定义配置以应对null值问题。此外,还对比了Jackson与阿里巴巴FastJson的特点,以及如何在项目中引入和配置FastJson,解决null值转换和中文乱码等问题。
1629 0