> 技术文档 > Java中Elasticsearch 7.17极简接入_elasticsearchconfig java连接

Java中Elasticsearch 7.17极简接入_elasticsearchconfig java连接


一.前言

Elaticsearch简称为ES,是一个开源的可扩展的分布式全文检索引擎服务器,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。ES使用Java开发并使用Lucene作为其核心来实现索引和搜索的功能,它通过简单的RestfulAPIJavaAPI来隐藏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详情

概念 说明 索引 索引包含一堆相关业务,结构相似的文档数据,比如说建立一个商品product索引库,里面就存放了所有的商品数据。 类型 类型是索引库中的一个逻辑数据分类,一个类型下的文档,都有相同的字段,类似于数据库中的表。比如商品类型,里面存放了所有的商品文档数据。6.0版本以前每个索引里可以是一个或多个类型,6.0版本以后一个索引只能有1个类型,7.x以后已经移除了这个概念。 文档 文档是存入索引库最小数据单元,一个文档可以是一条客户数据,一条商品数据,一条订单数据,通常用Json数据结构表示。文档存在索引库下的类型中。 字段 Field是Elasticsearch的最小单位。一个document里面有多个field,每个field就是一个数据字段。 映射 类型对文档结构的约束叫做映射(mapping),用来定义document的每个字段的约束。如:字段的数据类型、是否分词、是否索引、是否存储等特性。类型是模拟mysql中的table概念。表是有结构的,也就是表中每个字段都有约束信息。

最新版ES中的 index、document、filed、mapping这样的概念,对比参考MySQL如下:

ElasticSearch MySQL index 表 document 行 field 列 mapping 表结构

1.4数据示例

要实现全文搜索的效果,不可能使用数据库中like操作去进行比对,这种效率太低了。ES设计了一种全新的思想,来实现全文搜索。具体操作过程如下:

  1. 将被查询的字段的数据全部文本信息进行拆分,分成若干个词
    1. 例如“长沙科技公司”就会被拆分成三个词,分别是“长沙”、“科技”、“公司”,此过程有专业术语叫做分词。分词的策略不同,分出的效果不一样,不同的分词策略称为分词器。
  2. 将分词得到的结果存储起来,对应每条数据的id
    1. 例如id为1的数据中名称这一项的值是“长沙科技公司”,那么分词结束后,就会出现“长沙”对应id为1,“科技”对应id为1,“公司”对应id为1。
    2. 例如id为2的数据中名称这一项的值是“长沙岳麓区群众“,那么分词结束后,就会出现“长沙”对应id为2,“岳麓区”对应id为2,“群众”对应id为2。
    3. 此时就会出现如下对应结果,按照上述形式可以对所有文档进行分词。需要注意分词的过程不是仅对一个字段进行,而是对每一个参与查询的字段都执行,最终结果汇总到一个表格中。
分词结果关键字 对应id 长沙 1,2 科技 1 公司 1 岳麓区 2 群众 2
  1. 当进行查询时,如果输入“长沙”作为查询条件,可以通过上述表格数据进行比对,得到id值1,2,然后根据id值就可以得到查询的结果数据了。

二.对接过程

2.1版本对应关系(注意:版本一定要一致,不然会出现意向不到的问题)

版本地址:Versions :: Spring Data Elasticsearch

Spring Boot Spring Data Elasticsearch Elasticsearch 2.4.x 4.1.x 7.9.x 2.5.x 4.2.x 7.12.x 2.6.x 4.3.x 7.15.x 2.7.x 4.4.x 7.17.x

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 #