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

题记

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

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

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

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

注:这张图是从网上down的,我已经实现了上述功能。
这里写图片描述
(不能截图,原因:你懂的!)

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

这里写图片描述

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

——————————————————————————————————
更多ES相关实战干货经验分享,请扫描下方【铭毅天下】微信公众号二维码关注。
(每周至少更新一篇!)

这里写图片描述
和你一起,死磕Elasticsearch
——————————————————————————————————

2017年07月23日 17:05 于家中床前

作者:铭毅天下
转载请标明出处,原文地址:
http://blog.csdn.net/laoyang360/article/details/75933314
如果感觉本文对您有帮助,请点击‘顶’支持一下,您的支持是我坚持写作最大的动力,谢谢!

已标记关键词 清除标记
相关推荐
Elasticsearch 简介 ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。 elasticSearch 的使用场景 1、在海量数据前提下,对数据进行检索。比如:京东,淘宝等电商项目 课程目标: 1. 了解企业级搜索引擎 2. 安装elasticsearch {linux 系统} 3. 安装kibana并利用kibana对Elasticsearch 索引中的数据进行搜索、查看、交互操作 4. 项目实战{ELK} 课程目录: 01 课程介绍 02 elasticsearch 简介 03 elasticsearch 使用场景 04 安装elasticsearch 之前先安装jdk 05 安装elasticsearch 06 测试elasticsearch是否安装成功  07 安装kibana 08 elasticsearch 基本认识 以及添加索引和删除索引 09 elasticsearch 添加查询数据 10 elasticsearch 修改删除数据 11 elasticsearch 有条件的查询 12 分词子属性fuzzy查询 13 elasticsearch 过滤使用 14 elasticsearch 排序与分页 15 elasticsearch 如何查询指定的字段 16 elasticsearch 高亮显示 17 elasticsearch 聚合 18 elasticsearch mapping 概念 19 elasticsearch 的中文词库 20 elasticsearch 中文词库安装测试 21 elasticsearch 中文词库的使用案例 22 elasticsearch 自定义词库配置 23 安装nginx 配置中文词库 24 测试elasticsearch 自定义中文词库 25 搭建项目父工程 26 搭建项目bean-interface-common 27 搭建search 的service web 项目 28 测试项目是否能与elasticsearch联通 29 创建数据库并搭建首页 30 数据上传功能的实现类完成 31 数据上传控制器完成 32 dubbo 介绍以及安装zookeeper 33 将数据从mysql 上传到elasticsearch 中 34 elasticsearch查询功能分析 35 编写业务需求的dsl 语句 36 编写输入参数返回结果集的实体类 37 实现类编写 38 编写实现类中dsl 语句 39 返回集结果转换 40 结果测试 41 测试通过输入查询条件并将数据显示到页面
©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页