Elasticsearch全文检索系统实现深入详解

本文涉及的产品
RDS AI 助手,专业版
RDS Agent(兼容OpenClaw),2核4GB
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介: 题记学习ES的童鞋,都有一个开发一个类似百度的搜索引擎的想法。当然功能不一定是百度、360、谷歌传统的搜索引擎那么强大。但是,能实现基本的全文检索、指定类型的检索、评分高低优先级排序等等。那么问题来了,该如何实现?需要什么技术呢?

image.png

2、Elasticsearch全文检索系统架构设计与实现image.png

2.1 Elasticsearch服务端

作为检索引擎,数据是第一位的。


只有将基础数据存入到ES中,才能提供检索服务。而类似Mysql关系型数据库,初期需要我们:

1)设计库表、库表关联等;


2)基础数据入库(程序入库、手动入库等)。


同样的,

ES的创建索引 == Mysql的库表创建 。(ES6.X最新版本中将去掉type类型)。


ES的Mapping&创建==Mysql的字段设计&创建。


根据不同基础数据类型,

1)如果数据存储在关系型数据mysql或oracle中,可以通过logstash插入数据。


2)如果本地存储,或数据没有格式化。

需要先将数据格式化,格式化为Json文件,继而通过java等语言实现批量插入数据。

参考:Elasticsearch批量导入本地Json文件Java实现


2.2 本地Server端

可以通过Struts、Spring、Hibernate实现。


服务端的主要作用:

1)监听某设定端口;


2)接收客户端的请求(全文检索、指定字段检索等);


3)将请求解析后传递给Elasticsearch服务端。


4)接受到服务端的反馈后,将返回的大Json解析成前后端对接设定好的Json格式。


5)将转换后的Json返给客户端。


难点:

1)翻页

——ES提供了相关翻页接口,需要设定后当前请求的页面以及每页请求显示的数据

条数。


2)高亮

——ES提供了相关高亮接口,需要根据设定的字段进行二次封装。


2.3 本地客户端

可以通过Javascript、Ajax实现,或者通过 AngularJS实现。


主要功能点:

1)界面呈现;

2)数据渲染。

3)检索请求;

4)检索结果呈现。


难点:

1)分页页

可以通过分页插件实现。


后记

死磕ES,有问题欢迎大家提问探讨!

相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。  
相关文章
|
12月前
|
JSON 安全 数据可视化
Elasticsearch(es)在Windows系统上的安装与部署(含Kibana)
Kibana 是 Elastic Stack(原 ELK Stack)中的核心数据可视化工具,主要与 Elasticsearch 配合使用,提供强大的数据探索、分析和展示功能。elasticsearch安装在windows上一般是zip文件,解压到对应目录。文件,elasticsearch8.x以上版本是自动开启安全认证的。kibana安装在windows上一般是zip文件,解压到对应目录。elasticsearch的默认端口是9200,访问。默认用户是elastic,密码需要重置。
5927 0
|
JSON 自然语言处理 Java
ElasticSearch 实现分词全文检索 - 搜素关键字自动补全(Completion Suggest)
ElasticSearch 实现分词全文检索 - 搜素关键字自动补全(Completion Suggest)
645 1
|
自然语言处理 Java 关系型数据库
ElasticSearch 实现分词全文检索 - 聚合查询 cardinality
ElasticSearch 实现分词全文检索 - 聚合查询 cardinality
528 1
|
自然语言处理 Java 索引
ElasticSearch 实现分词全文检索 - delete-by-query
ElasticSearch 实现分词全文检索 - delete-by-query
274 1
|
自然语言处理 Java 关系型数据库
ElasticSearch 实现分词全文检索 - SpringBoot 完整实现 Demo 附源码【完结篇】
ElasticSearch 实现分词全文检索 - SpringBoot 完整实现 Demo 附源码【完结篇】
627 0
|
存储 自然语言处理 Java
ElasticSearch 实现分词全文检索 - 经纬度定位商家距离查询
ElasticSearch 实现分词全文检索 - 经纬度定位商家距离查询
389 0
|
自然语言处理 Java
ElasticSearch 实现分词全文检索 - 高亮查询
ElasticSearch 实现分词全文检索 - 高亮查询
292 0
|
缓存 自然语言处理 Java
ElasticSearch 实现分词全文检索 - filter查询
ElasticSearch 实现分词全文检索 - filter查询
228 0
|
自然语言处理 Java
ElasticSearch 实现分词全文检索 - 复合查询
ElasticSearch 实现分词全文检索 - 复合查询
198 0
|
自然语言处理 前端开发 Java
ElasticSearch 实现分词全文检索 - Scroll 深分页
ElasticSearch 实现分词全文检索 - Scroll 深分页
251 0

热门文章

最新文章