天天看点

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

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

2、Elasticsearch全文检索系统架构设计与实现
Elasticsearch全文检索系统实现深入详解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,有问题欢迎大家提问探讨!