开源-基于ElasticSearch的通用搜索引擎

开源-基于ElasticSearch的通用搜索引擎

编写目的

最近在使用ElasticSearch(以下简称ES)搭建实时数仓的时候,对于索引中的数据都是编写代码或者查询语句进行搜索,效率低下。于是想着把搜索过程进行封装,并将搜索结果直接展示在前端。

图1:数据列表页面
数据列表页面
图2:数据详情页面
数据详情页面
图3:数据聚合可视化页面
在这里插入图片描述

功能介绍与亮点

1、用户可以直接在搜索框内输入数据,即可对ES库进行搜索,搜索结果将通过列表方式展示。其中列表字段可以自行配置(后续会讲具体配置方法)。
2、添加时间过滤与排序功能,用户可以直接在页面选定时间段对数据进行过滤与排序。前提是数据中需要存在时间字段并且进行配置。
3、数据分类展示,方便检索与查看相对应的数据。
4、高级搜索功能,可以在搜索词内输入“&&”或“||”进行“且与或”的逻辑搜索,相当于MySQL中的“or和and”。同时用户可以使用“people.name==李奇峰”即可指定搜索的具体字段。
5、用户可直接指定聚合字段,框架会自动将聚合结果进行可视化图表展示。

使用方法

1、将代码同步至本地后,找到application.yml并修改其中的配置,将数据替换成你本地的样式。
在这里插入图片描述

2、代码同步后,找到search.sql文件并导入至mysql库中(需要提前建好库,库名随意),导入成功后出现三张表:table_info、field_info、agg_info。
table_info用于控制那些index可以用于检索,并为index进行别名设置已经分类展示。表结构如下:
在这里插入图片描述
field_info用于控制检索列表展示字段。表结构如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/2020122123464176.png
agg_info用于控制index中的聚合字段用于可视化展示,表结构如下:
在这里插入图片描述

项目地址

https://github.com/mrliqifeng/webSearchForEs

感触

这个搜索引擎实现起来很快、难度不大,无非是对ElasticSearch接口的调用而已。编写的目的也只是为了服务于实时数仓,可以更快更方便的查看数仓中的数据。
但是在引擎的实现过程中,暴露出许多数据上的问题,比如脏数据过多导致搜索效率低下、单条数据过大导致http请求故障、时间字段混乱导致无法根据时间进行过滤与排序、数据中的无用或低频字段过多占用大量的索引空间,过多的表导致业务使用方开发效率低。
于是在实现搜索引擎的过程中,连带着做数据治理,数据分层,数据整合等工作。等到搜索引擎实现后,上面描述的数据问题已经基本解决。
最后的总结就是想要做出一个好的搜索引擎,或者说想要得心应手的使用数据,数据的治理工作占重中之重。

  • 9
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 19
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值