介绍Spring boot整合elastic search 7.9.1实现全文检索 。主要包含以下特性:
- 全文检索的实现主要包括构建索引、高级搜索、聚集统计、数据建模四个模块;
- 使用 elasticsearch-rest-high-level-client 来操作elasticsearch , 构建索引时 , 根据实际情况考虑哪些字段需要分词 , 哪些不需要分词 , 这会影响搜索结果 。使用IK分词器虽然能解决一些中文分词的问题 , 但是由于分词的粒度不够细 , 导致很多词语可能搜不到 。例如ik分词器在构建索引“三国无双”时 , 会把“三国”“无双”存起来建索引 , 但是搜索“国无”时 , 搜不出来 , 因此 , 我们采用把文本拆分到最细粒度来进行分词 , 从而最大限度地搜索到相关结果 。详情参考:如何手动控制分词粒度提高搜索的准确性
- 高级搜索实现了以下几种:多字段搜索,指定多个字段进行搜索:query_string , 支持高亮显示经纬度搜索:distanceQuery范围过滤,对搜索结果进一步按照范围进行条件过滤:rangeQuery
- 搜索结果的展示提供了普通分页和滚动分页两种实现 。普通分页只适合数据量较小的场景 , 在数据量非常大的情况下 , start+size普通分页会把全部记录加载到内存中 , 这样做不但运行速度特别慢 , 而且容易让es出现内存不足而挂掉 。滚动分页需要得到一个scrollid , 以后每次使用scrollid去获取下一页的内容 , 缺点是不能跳页 。
- 聚集统计包含词条聚集、日期直方图聚集、范围聚集 , 并使用chart.js进行可视化
- 数据建模部分实现了嵌套对象的使用 , 查询时无需join性能较好 , 但是在建索引时就要把关联数据join好嵌套进去 。
- swagger入口:http://localhost:8080/swagger-ui.html
- 新增数据库数据导入es的工具 , 编程实现比logstash灵活 。使用请切换分支到master 。db-import-elastic_search
- 通用的多条件查询结构模板是布尔查询 , 其中must部分放入带分词的搜索例如match、querystring等;filter部分放入过滤条件例如term、range等查询 。因为filter部分利用缓存、跳过相关度打分提高性能:
// 通用查询结构模板{"query": {"bool": {"must": [{ "match": { "title":"Search"}},{ "match": { "content": "Elasticsearch" }}],"filter": [{ "term":{ "status": "published" }},{ "range": { "publish_date": { "gte": "2015-01-01" }}}]}}}
文章插图
构建索引
文章插图
搜狗日志列表
文章插图
经纬度搜索
文章插图
数据统计分析
文章插图
各国家城市列表
文章插图
has parent搜索
文章插图
has child搜索
源代码地址:Spring-elastic_search: Spring boot整合Elasticsearch实现全文检索和大数据分析
【springboot集成elasticsearch】
推荐阅读
- 几行代码搞定 SpringBoot 接口恶意刷新和暴力请求
- SpringBoot配置多数据源
- AMD|装机省钱了!AMD确认Zen4锐龙7000全系集成GPU:亮机卡性能
- 系统集成项目管理工程师是什么 项目管理工程师
- AMD|AMD也淘汰14nm 锐龙7000 IO核心升级6nm:首次集成RDNA2核显
- AMD|5nm Zen4来了!AMD新锐龙7000完全偷跑:集成GPU、单核性能大写的YES
- SpringBoot实现人脸识别功能
- 宝兰集成吊顶价格具体是多少
- 奥普集成吊顶价格详情介绍
- 集成吊顶价格清单以及品牌介绍