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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 学习ES的童鞋,都有一个开发一个类似百度的搜索引擎的想法。那么问题来了,该如何实现?需要什么技术呢?

题记

学习ES的童鞋,都有一个开发一个类似百度的搜索引擎的想法。当然功能不一定是百度、360、谷歌传统的搜索引擎那么强大。

但是,能实现基本的全文检索、指定类型的检索、评分高低优先级排序等等。

那么问题来了,该如何实现?需要什么技术呢?

1、Elasticsearch全文检索系统效果图

注:这张图是从网上down的,我已经实现了上述功能。

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,有问题欢迎大家提问探讨!

——————————————————————————————————

作者:铭毅天下
转载请标明出处,原文地址:
http://blog.csdn.net/laoyang360/article/details/75933314

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
1月前
|
搜索推荐 Java 数据库
springboot集成ElasticSearch的具体操作(系统全文检索)
springboot集成ElasticSearch的具体操作(系统全文检索)
|
1月前
|
运维 监控 Java
探索Elasticsearch在Java环境下的全文检索应用实践
【4月更文挑战第17天】本文介绍了在Java环境下使用Elasticsearch实现全文检索的步骤。首先,简述了Elasticsearch的功能和安装配置。接着,通过Maven添加`elasticsearch-rest-high-level-client`依赖,创建`RestHighLevelClient`实例连接Elasticsearch。内容包括:创建/删除索引,插入/查询文档。还探讨了高级全文检索功能、性能优化和故障排查技巧。通过Elasticsearch,开发者能高效处理非结构化数据,提升应用程序价值。
|
8月前
|
Linux 异构计算 索引
释放搜索潜力:基于ES(ElasticSearch)打造高效的语义搜索系统,让信息尽在掌握
释放搜索潜力:基于ES(ElasticSearch)打造高效的语义搜索系统,让信息尽在掌握
|
9月前
|
数据采集 弹性计算 开发工具
使用阿里云Elasticsearch快速搭建可观测系统
本实验带您体验如何登录阿里云Elasticsearch集群,使用Beats采集器收集ECS上的系统数据和Nginx服务数据,配置基础的指标分析看板,简单展示数据采集、分析的过程和操作方式。
331 0
|
11月前
|
Java 测试技术 Spring
十一.全文检索ElasticSearch经典入门-SpringBoot整合ElasticSearch7
十一.全文检索ElasticSearch经典入门-SpringBoot整合ElasticSearch7
|
10月前
|
关系型数据库 MySQL Java
基于Elasticsearch+Logstash+Kibana的小型流量分析系统
基于Elasticsearch+Logstash+Kibana的小型流量分析系统
|
11月前
|
自然语言处理 前端开发 Java
十.全文检索ElasticSearch经典入门-自动补全功能
十.全文检索ElasticSearch经典入门-自动补全功能
|
11月前
|
索引
九.全文检索ElasticSearch经典入门-ElasticSearch映射修改
九.全文检索ElasticSearch经典入门-ElasticSearch映射修改
|
11月前
|
存储 自然语言处理 负载均衡
八.全文检索ElasticSearch经典入门-深入理解ElasticSearch核心原理
八.全文检索ElasticSearch经典入门-深入理解ElasticSearch核心原理
|
15天前
Elasticsearch安装配置文件
Elasticsearch安装配置文件
15 0