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

本文涉及的产品
Elasticsearch Serverless通用抵扣包,测试体验金 200元
简介: 开源-基于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://ucc.alicdn.com/images/user-upload-01/2020122123464176.png
agg_info用于控制index中的聚合字段用于可视化展示,表结构如下:
在这里插入图片描述

项目地址

https://github.com/mrliqifeng/webSearchForEs

感触

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

相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。  
目录
相关文章
|
5月前
|
人工智能 自然语言处理 运维
让搜索引擎“更懂你”:AI × Elasticsearch MCP Server 开源实战
本文介绍基于Model Context Protocol (MCP)标准的Elasticsearch MCP Server,它为AI助手(如Claude、Cursor等)提供与Elasticsearch数据源交互的能力。文章涵盖MCP概念、Elasticsearch MCP Server的功能特性及实际应用场景,例如数据探索、开发辅助。通过自然语言处理,用户无需掌握复杂查询语法即可操作Elasticsearch,显著降低使用门槛并提升效率。项目开源地址:<https://github.com/awesimon/elasticsearch-mcp>,欢迎体验与反馈。
1498 1
|
10月前
|
存储 监控 安全
|
10月前
|
存储 数据采集 监控
开源日志分析Elasticsearch
【10月更文挑战第22天】
162 5
|
存储 自然语言处理 搜索推荐
分布式搜索引擎ElasticSearch
Elasticsearch是一款强大的开源搜索引擎,用于快速搜索和数据分析。它在GitHub、电商搜索、百度搜索等场景中广泛应用。Elasticsearch是ELK(Elasticsearch、Logstash、Kibana)技术栈的核心,用于存储、搜索和分析数据。它基于Apache Lucene构建,提供分布式搜索能力。相比其他搜索引擎,如Solr,Elasticsearch更受欢迎。倒排索引是其高效搜索的关键,通过将词条与文档ID关联,实现快速模糊搜索,避免全表扫描。
582 102
|
自然语言处理 搜索推荐 数据库
高性能分布式搜索引擎Elasticsearch详解
高性能分布式搜索引擎Elasticsearch详解
302 4
高性能分布式搜索引擎Elasticsearch详解
|
11月前
|
自然语言处理 搜索推荐 关系型数据库
elasticsearch学习六:学习 全文搜索引擎 elasticsearch的语法,使用kibana进行模拟测试(持续更新学习)
这篇文章是关于Elasticsearch全文搜索引擎的学习指南,涵盖了基本概念、命令风格、索引操作、分词器使用,以及数据的增加、修改、删除和查询等操作。
223 0
elasticsearch学习六:学习 全文搜索引擎 elasticsearch的语法,使用kibana进行模拟测试(持续更新学习)
|
11月前
|
开发框架 监控 搜索推荐
GoFly快速开发框架集成ZincSearch全文搜索引擎 - Elasticsearch轻量级替代为ZincSearch全文搜索引擎
本文介绍了在项目开发中使用ZincSearch作为全文搜索引擎的优势,包括其轻量级、易于安装和使用、资源占用低等特点,以及如何在GoFly快速开发框架中集成和使用ZincSearch,提供了详细的开发文档和实例代码,帮助开发者高效地实现搜索功能。
590 0
|
11月前
|
自然语言处理 搜索推荐 Java
SpringBoot 搜索引擎 海量数据 Elasticsearch-7 es上手指南 毫秒级查询 包括 版本选型、操作内容、结果截图(一)
SpringBoot 搜索引擎 海量数据 Elasticsearch-7 es上手指南 毫秒级查询 包括 版本选型、操作内容、结果截图
232 0
|
11月前
|
存储 自然语言处理 搜索推荐
SpringBoot 搜索引擎 海量数据 Elasticsearch-7 es上手指南 毫秒级查询 包括 版本选型、操作内容、结果截图(二)
SpringBoot 搜索引擎 海量数据 Elasticsearch-7 es上手指南 毫秒级查询 包括 版本选型、操作内容、结果截图(二)
206 0
|
SQL 监控 搜索推荐
Elasticsearch 与 OpenSearch:开源搜索技术的演进与选择
Elasticsearch 与 OpenSearch:开源搜索技术的演进与选择