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

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 开源-基于ElasticSearch的通用搜索引擎

@TOC

编写目的

最近在使用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://ucc.alicdn.com/images/user-upload-01/2020122123464176.png
agg_info用于控制index中的聚合字段用于可视化展示,表结构如下:
在这里插入图片描述

项目地址

https://github.com/mrliqifeng/webSearchForEs

感触

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

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
目录
相关文章
|
2月前
|
机器学习/深度学习 搜索推荐 关系型数据库
号称Elasticsearch 10倍性能搜索引擎到底有多强悍
号称Elasticsearch 10倍性能搜索引擎到底有多强悍
58 0
|
1天前
|
存储 自然语言处理 搜索推荐
分布式搜索引擎ElasticSearch
Elasticsearch是一款强大的开源搜索引擎,用于快速搜索和数据分析。它在GitHub、电商搜索、百度搜索等场景中广泛应用。Elasticsearch是ELK(Elasticsearch、Logstash、Kibana)技术栈的核心,用于存储、搜索和分析数据。它基于Apache Lucene构建,提供分布式搜索能力。相比其他搜索引擎,如Solr,Elasticsearch更受欢迎。倒排索引是其高效搜索的关键,通过将词条与文档ID关联,实现快速模糊搜索,避免全表扫描。
18 2
|
5天前
|
SQL 监控 搜索推荐
Elasticsearch 与 OpenSearch:开源搜索技术的演进与选择
Elasticsearch 与 OpenSearch:开源搜索技术的演进与选择
32 2
|
12天前
|
存储 搜索推荐 Java
Java远程连接本地开源分布式搜索引擎ElasticSearch
Java远程连接本地开源分布式搜索引擎ElasticSearch
|
29天前
|
监控 搜索推荐 安全
面经:Elasticsearch全文搜索引擎原理与实战
【4月更文挑战第10天】本文是关于Elasticsearch面试准备的博客,重点讨论了四个核心主题:Elasticsearch的分布式架构和数据模型、CRUD操作与查询DSL、集群管理与性能优化,以及安全与插件扩展。文中通过代码示例介绍了如何进行文档操作、查询以及集群管理,并强调理解Elasticsearch的底层原理和优化策略对面试和实际工作的重要性。
32 6
|
1月前
|
监控 数据可视化 搜索推荐
初识Elasticsearch:打造高效全文搜索与数据分析引擎
【4月更文挑战第7天】Elasticsearch,一款由Elastic公司开发的分布式搜索引擎,以其全文搜索和数据分析能力在全球范围内广泛应用。它基于Apache Lucene,支持JSON,适用于日志分析、监控等领域。Elasticsearch的亮点包括:精准快速的全文搜索,通过倒排索引和分析器实现;强大的数据分析与实时响应能力,提供丰富聚合功能;弹性扩展和高可用性,适应水平扩展和故障恢复;以及完善的生态系统,与Kibana、Logstash等工具集成,支持多种编程语言。作为大数据处理的重要工具,Elasticsearch在企业级搜索和数据分析中扮演关键角色。
28 1
|
2月前
|
数据采集 消息中间件 搜索推荐
搜索引擎 _ Elasticsearch(二)
搜索引擎 _ Elasticsearch
29 0
|
2月前
|
分布式计算 搜索推荐 Java
搜索引擎 _ Elasticsearch(一)
搜索引擎 _ Elasticsearch
38 0
|
5月前
|
监控 搜索推荐 数据挖掘
一文快速了解Elastic Search 开源搜索引擎(技术选型+启动命令)
一文快速了解Elastic Search 开源搜索引擎(技术选型+启动命令)
59 0
|
6月前
|
存储 自然语言处理 搜索推荐
深入了解Elasticsearch搜索引擎篇:倒排索引、架构设计与优化策略
首先,我们介绍了Elasticsearch(ES)的倒排索引,这是一种用于快速检索的数据结构。其次,我们了解了ES集群的架构,包括主节点、数据节点和协调节点的功能和作用。然后,我们探讨了中文分词器的选择,其中包括IK、HanLP和Jieba等常用的分词工具。接着,我们解释了写入数据和查询数据的工作原理,包括请求的分配和预处理,数据的存储和查询结果的处理过程。最后,我们讨论了ES部署的优化方法,包括调整JVM内存、分片布局和数量、节点身份设计以及配置Ingest节点等方面的策略。
深入了解Elasticsearch搜索引擎篇:倒排索引、架构设计与优化策略