1.简介
Elasticsearch是一个基于Lucene的搜索服务器。提供了一个分布式多用户能力的全文搜索引擎,在前面的文章中讲解了单机、集群搭建、DSL语句、分词器、以及整合SpringBoot的Demo。
相关Elasticsearch专题篇
- ElasticSearch基本概念(索引,分片,节点,倒排索引…)
- ElasticSearch7.x单机版安装
- ElasticSearch7.x高可用集群版搭建
- Elasticsearch 7x 配置文件详解
- Elasticsearch客户端工具之kibana
- Elasticsearch客户端工具之ES-Head
- ElasticSearch7.x安全性之访问密码设置
- Elasticsearch7.x DSL语法之索引管理
- Elasticsearch7.x DSL语法之文档管理
- Elasticsearch7.x DSL语法之条件查询
- Elasticsearch7.x DSL语法之分页查询
- Elasticsearch7.x DSL语法之聚合查询
- Elasticsearch7.x DSL语法实践手册
- Elasticsearch7.x SQL语法查询支持
- Elasticsear分词器(内置分词器、集成中文分词器)
- SpringBoot+spring-boot-starter-data-elasticsearch整合Elasticsearch
- SpringBoot+官方Java High Level REST Client整合Elasticsearch
本文主要以仿某东商品搜索,实例讲解电商系统是如何使用ES更高效的分词搜索
直接上图
注:源码以及源码说明在下一篇文章
ElasticSearch商城商品搜索实战
包含源码工程,以及实现商品搜索功能的全介绍。
2.前期准备
- 安装ElasticSearch、Kibana、ik分词器,注意这三个版本需保持一致。
- 启动ElasticSearch,端口 9200,9300
3.运行环境
- ElasticSearch 7.4.0
- kibana 7.4.0
- IK分词器 7.4.0 (官方传送门、分词器安装与介绍)
- JDK 1.8
- Maven 3.6
- SpringBoot 2.3.0
- 模板引擎(thymeleaf)
4.实现的功能点
- Mysql数据导入 > ES (尽可能模拟实际场景) ;
- ES分页查询(最大限制100页) ;
- ES分词搜索、权重排序 ;
- 标题关键字匹配、商品名前缀匹配 ;
- 品牌分类关键字匹配 ;
- 标题分词匹配 ;
- ES查询关键字高亮显示(搜索词高亮显示) ;
- 商品分类、品牌搜索(支持根据关键字匹配分类与品牌) ;
- 商品动态规格搜索(随着条件变化而变化) ;
注:页面使用的是thymeleaf模板渲染的html,为了Demo项目尽可能简化,主讲ES搜索。
5.效果图
5.1查询条件区域
5.2商品搜索
5.3动态效果图
注:效果图过大做了压缩,不是很清晰。
6.源码工程介绍
- common 包,存放了一些公共常量,工具类等
- controller 接口
- dao mapper与实体类
- model 转换对象
- repository 使用data-elasticsearch与ES对应
- service 接口与实现
- templates 基于templates实现的页面。这里没有用前后分离。
- static 页面所需的一些静态依赖文件。
6.1代码一角
基本上每行都带有注释,每个方法做了封装,每一个方法尽量只做一件事。
关注程序员小强公众号更多编程趣事,知识心得与您分享
👏关注“程序员小强”发送关键字“elasticSearch”到公众号获取相关篇