Java中Elasticsearch 7.17极简接入_elasticsearchconfig java连接
一.前言
Elaticsearch简称为ES,是一个开源的可扩展的分布式全文检索引擎服务器,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。ES使用Java开发并使用Lucene作为其核心来实现索引和搜索的功能,它通过简单的RestfulAPI和JavaAPI来隐藏Lucene的复杂性,从而让全文搜索变得简单。
ES官网:Elasticsearch:官方分布式搜索和分析引擎 | Elastic
1.1场景
- 分布式的搜索引擎
- 分布式:Elasticsearch自动将海量数据分散到多台服务器上去存储和检索
- 搜索:百度、谷歌,站内搜索
- 全文检索
- 提供模糊搜索等自动度很高的查询方式,并进行相关性排名,高亮等功能
- 数据分析引擎(分组聚合)
- 电商网站,最近一周笔记本电脑这种商品销量排名top10的商家有哪些?新闻网站,最近1个月访问量排名top3的新闻板块是哪些
- 对海量数据进行近实时的处理
- 海量数据的处理:因为是分布式架构,Elasticsearch可以采用大量的服务器去存储和检索数据,自然而然就可以实现海量数据的处理 近实时:Elasticsearch可以实现秒级别的数据搜索和分析
1.2概念
索引库[index]-----------------------------------Database 数据库 类型[type]----------------------------------Table 数据表 文档[Document]--------------------------Row 行 字段[Field]-------------------------Column 列 映射[mapping]-------------------表结构
1.3详情
最新版ES中的 index、document、filed、mapping这样的概念,对比参考MySQL如下:
1.4数据示例
要实现全文搜索的效果,不可能使用数据库中like操作去进行比对,这种效率太低了。ES设计了一种全新的思想,来实现全文搜索。具体操作过程如下:
- 将被查询的字段的数据全部文本信息进行拆分,分成若干个词
- 例如“长沙科技公司”就会被拆分成三个词,分别是“长沙”、“科技”、“公司”,此过程有专业术语叫做分词。分词的策略不同,分出的效果不一样,不同的分词策略称为分词器。
- 将分词得到的结果存储起来,对应每条数据的id
- 例如id为1的数据中名称这一项的值是“长沙科技公司”,那么分词结束后,就会出现“长沙”对应id为1,“科技”对应id为1,“公司”对应id为1。
- 例如id为2的数据中名称这一项的值是“长沙岳麓区群众“,那么分词结束后,就会出现“长沙”对应id为2,“岳麓区”对应id为2,“群众”对应id为2。
- 此时就会出现如下对应结果,按照上述形式可以对所有文档进行分词。需要注意分词的过程不是仅对一个字段进行,而是对每一个参与查询的字段都执行,最终结果汇总到一个表格中。
- 当进行查询时,如果输入“长沙”作为查询条件,可以通过上述表格数据进行比对,得到id值1,2,然后根据id值就可以得到查询的结果数据了。
二.对接过程
2.1版本对应关系(注意:版本一定要一致,不然会出现意向不到的问题)
版本地址:Versions :: Spring Data Elasticsearch
2.2版本(Spring Boot2.7.18、Spring Data Elasticsearch4.4.18、Elasticsearch7.17.18)
2.3maven依赖
org.springframework.boot spring-boot-starter-data-elasticsearch
2.4yaml中参数
spring: # elasticsearch配置 elasticsearch: uris: 127.0.0.1:9200 # Elasticsearch 连接地址 username: elastic # 账号 password: 123456 #