Elasticsearch 字段类型之 Range 经典应用场景

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: Elasticsearch 产品功能越来越强大,字段类型支持很多种,部分类型还引入了专用的算法。一个客户企业选中 Elasticsearch 作为搜索中台,居然是看中了 Elasticsearch 的 Range 字段类型,下面就围绕这个 Range 类型展开。

作者介绍:

李猛(ynuosoft),Elastic-stack 产品深度用户,ES 认证工程师,2012 年接触 Elasticsearch,对 Elastic-Stack 开发、架构、运维等方面有深入体验,实践过多种 Elasticsearch 项目,最暴力的大数据分析应用,最复杂的业务系统应用;业余为企业提供 Elastic-stack 咨询培训以及调优实施。

现状背景

背景需求

产品信息,数据量在几个 TB 级以上,每种工业产品都有大量的标签信息,标签信息多数属于数值类型,且是属于范围那种数据,如某安防头盔尺寸是 L 码,配合适合范围55cm~65cm,对于此种数据查询,若标签属性较少,还可以走传统的数据库索引查询,若标签属性很多,则显然很吃力。

原有方案

企业技术负责人入行IT很早,原始的技术栈组合是 Sqlserver+Clucene 组合,原始工业产品信息存储在数据库中,搜索查询走 Clucene,有很多问题,如下:

• 自主包装 Clucene 核心库,框架与业务代码深度耦合,单次需求变更都需要发布版本,不具备稳定性
• 索引实时更新几乎没有,属于离线更新,且更新一次周期很长
• Clucene 版本很旧,对于搜索的支持还是早期分词阶段,仅支持倒排索引
• 对于范围搜索,采用的是分词方式实现,不能做到精确的范围搜索,这个是最核心迫切需要的功能
• 基于 Clucene 开发的搜索应用 ,索引数据太大,客户花很多精力实现分布式,且效果不理想。

image.png

技术实现

相比传统关系型数据库,Elasticsearch 实现的方式更加直接高效。

Range类型设置

Elasticsearch 支持多种范围类型

• 数值类型
• 日期类型
• IP地址类型

image.png

若在关系数据库中则每个标签属性需要2个字段表示范围值。

Range数据填充

填充范围数据,有多种表达式
• 大于,gt
• 小于,lt
• 大于等于,gte
• 小于等于,lte

image.png

Range数据查询

查询语法很简单,不过查询的关联关系有几种

• 相交,查询条件的范围与字段数据范围有交叉,默认使用
• 包含,查询条件的范围值,包含字段的数据范围值
• 反包含,与包含相反,查询条件的范围值包含在字段的数据范围之内。

image.png

若在关系数据库中查询相交则需要2组表达式合并才可以,若多个标签属性同时查询,则更复杂。

技术原理

在跟客户企业沟通中,发现比较重要的信息是,技术负责人对于搜索领域的知识认知比较陈旧,Lucene 发展早已不仅仅是倒排索引,已经支持了很多索引算法,且应用领域也早就突破分词搜索,Elastic 产品版本近年更新很快,相应的 Lucene 也一样。

为什么选择 Elasticsearch 替代关系型数据库做范围查询最合适呢?原因如下:

产品功能

image.png

Elasticsearch 从 2016 年引入了 BKD 树算法,在构建索引时会依据字段类型设置不同的算法实现,无需要人工干预,只要设计正确的类型,如下

• 若是字符类型的,基于 Inverted Index 构建索引
• 若是数值类型,基于 BKD-Tree 构建索引

算法介绍

image.png

• Bkd-Tree 作为一种基于 K-D-B-tree 的索引结构,用来对多维度的点数据 (multi-dimensional point data) 集进行索引。关于构建 BKD-Tree 过程不在本文探讨范围内,详细可以查阅更专业的论文。
• 从前面客户需求描述得到,客户的工业产品信息有很多范围类型的标签属性,在 Elasticsearch 中,仅需要构建一个索引即可满足高效查找,且默认是所有标签属性自动构造索引。
• 想想看若基于传统关系型数据库实现,每标签属性都需要至少 2 个字段,且多个标签属性要任意组合查询,不能通过一个索引实现,需要创建很多索引,查询时还必须保持最左原则;
• BKD-Tree 索引查询效率比关系型数据库的 BTree 更胜一筹。

结语

经验总结

• Elastic 核心基于 Lucene,功能发展非常成熟,普通用户没有必要基于 Lucene 自主开发搜索应用,只需要关注自己的业务实现。
• 数据产品的竞争更多的是产品背后实现算法的竞争,对于我们来说需要经常更新自己的知识体系,选择最合适的技术方案响应变化。
• DB 与 ES 混合应用已经成为当前潮流,Elastic 已经成为当前查询应用标配
• ES 用的好,下班必须早

声明:本文由原文作者“李猛”授权转载,对未经许可擅自使用者,保留追究其法律责任的权利。


image.png

阿里云Elastic Stack】100%兼容开源ES,独有9大能力,提供免费X-pack服务(单节点价值$6000)

相关活动


更多折扣活动,请访问阿里云 Elasticsearch 官网

阿里云 Elasticsearch 商业通用版,1核2G ,SSD 20G首月免费
阿里云 Logstash 2核4G首月免费


image.png

image.png

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
8月前
|
运维 监控 Java
探索Elasticsearch在Java环境下的全文检索应用实践
【6月更文挑战第30天】在大数据背景下,Elasticsearch作为分布式搜索分析引擎,因其扩展性和易用性备受青睐。本文指导在Java环境中集成Elasticsearch,涉及安装配置、使用RestHighLevelClient连接、索引与文档操作,如创建索引、插入文档及全文检索查询。此外,还讨论了高级查询、性能优化和故障排查,帮助开发者高效处理非结构化数据全文检索。
199 0
|
17天前
|
存储 运维 监控
金融场景 PB 级大规模日志平台:中信银行信用卡中心从 Elasticsearch 到 Apache Doris 的先进实践
中信银行信用卡中心每日新增日志数据 140 亿条(80TB),全量归档日志量超 40PB,早期基于 Elasticsearch 构建的日志云平台,面临存储成本高、实时写入性能差、文本检索慢以及日志分析能力不足等问题。因此使用 Apache Doris 替换 Elasticsearch,实现资源投入降低 50%、查询速度提升 2~4 倍,同时显著提高了运维效率。
金融场景 PB 级大规模日志平台:中信银行信用卡中心从 Elasticsearch 到 Apache Doris 的先进实践
|
24天前
|
人工智能 自然语言处理 搜索推荐
云端问道12期实操教学-构建基于Elasticsearch的企业级AI搜索应用
本文介绍了构建基于Elasticsearch的企业级AI搜索应用,涵盖了从传统关键词匹配到对话式问答的搜索形态演变。阿里云的AI搜索产品依托自研和开源(如Elasticsearch)引擎,提供高性能检索服务,支持千亿级数据毫秒响应。文章重点描述了AI搜索的三个核心关键点:精准结果、语义理解、高性能引擎,并展示了架构升级和典型应用场景,包括智能问答、电商导购、多模态图书及商品搜索等。通过实验部分,详细演示了如何使用阿里云ES搭建AI语义搜索Demo,涵盖模型创建、Pipeline配置、数据写入与检索测试等步骤,同时介绍了相关的计费模式。
|
5月前
|
机器学习/深度学习 存储 监控
Elasticsearch 在日志分析中的应用
【9月更文第2天】随着数字化转型的推进,日志数据的重要性日益凸显。日志不仅记录了系统的运行状态,还提供了宝贵的洞察,帮助企业改进产品质量、优化用户体验以及加强安全防护。Elasticsearch 作为一个分布式搜索和分析引擎,因其出色的性能和灵活性,成为了日志分析领域的首选工具之一。本文将探讨如何使用 Elasticsearch 作为日志分析平台的核心组件,并详细介绍 ELK(Elasticsearch, Logstash, Kibana)栈的搭建和配置流程。
489 4
|
24天前
|
人工智能 算法 API
构建基于 Elasticsearch 的企业级 AI 搜索应用
本文介绍了基于Elasticsearch构建企业级AI搜索应用的方案,重点讲解了RAG(检索增强生成)架构的实现。通过阿里云上的Elasticsearch AI搜索平台,简化了知识库文档抽取、文本切片等复杂流程,并结合稠密和稀疏向量的混合搜索技术,提升了召回和排序的准确性。此外,还探讨了Elastic的向量数据库优化措施及推理API的应用,展示了如何在云端高效实现精准的搜索与推理服务。未来将拓展至多模态数据和知识图谱,进一步提升RAG效果。
|
3月前
|
存储 SQL 监控
|
3月前
|
自然语言处理 监控 数据可视化
|
3月前
|
运维 监控 安全
|
4月前
|
机器学习/深度学习 存储 运维
探索未来:结合机器学习功能拓展Elasticsearch应用场景
【10月更文挑战第8天】随着数据量的爆炸性增长,高效的数据存储、检索和分析变得越来越重要。Elasticsearch 作为一个分布式的搜索和分析引擎,以其强大的全文搜索能力、实时分析能力和可扩展性而闻名。近年来,随着机器学习技术的发展,将机器学习集成到 Elasticsearch 中成为了一种新的趋势,这不仅增强了 Elasticsearch 的数据分析能力,还开拓了一系列新的应用场景。
106 7
|
4月前
|
人工智能
云端问道12期-构建基于Elasticsearch的企业级AI搜索应用陪跑班获奖名单公布啦!
云端问道12期-构建基于Elasticsearch的企业级AI搜索应用陪跑班获奖名单公布啦!
193 2

热门文章

最新文章

相关产品

  • 检索分析服务 Elasticsearch版