带你读《Elastic Stack 实战手册》之73:——4.1.5.Elasticsearch在搜索引擎构建中的实践 (下)

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 带你读《Elastic Stack 实战手册》之73:——4.1.5.Elasticsearch在搜索引擎构建中的实践 (下)

《Elastic Stack 实战手册》——四、应用实践——4.1 企业搜索应用场景 ——4.1.5.Elasticsearch在搜索引擎构建中的实践 (上) https://developer.aliyun.com/article/1226299



业务模板

 

1、背景:针对批量部署及其他的数据使用需要,会存在很多公用的模板和脚本,Elasticsearch 中的版本控制等较差,随着时间的推移会产生很多因为版本不同而带来的结果差异

2、实现:我们维护了包括索引模板、搜索模板、各类 ingest processor 和 script 等的中央仓库,统一进行维护和升级

3、优势:统一管理各类公用配置保证所有集群的配置保持一致

4、劣势:统一的基础配置需要各集群叠加个性化、高优先级配置进行配置覆盖,才能满足不同集群中个性化的数据需要

 

统一数据处理算子

 

1、背景:不同数据结构大致一致,仅存在少量不同字段,但是每个业务维护自己的召回、排序服务可能会带来大量的资源浪费

2、实现:统一基础数据模板、召回、排序服务,配合个性化数据结构、召回排序逻辑

3、优势:对于基础的,大体相似的逻辑进行公共抽象、统一维护,减少了服务的开发、迭代的资源需求,通过各业务方个性化的数据、策略调整,满足不同业务方个性化的数据需求

4、劣势:通用算子的修改升级可能会横向影响多个业务的使用,加大了数据质量和测试的工作量


实际案例

 

本节主要阐述和 Elasticsearch 使用相关的案例,其他和搜索等业务相关的内容略去。

 

集群升级

 

1、背景:某些使用场景中,某些版本的 Elasticsearch 存在瓶颈,制约了系统构建、使用和维护效率。Elasticsearch 大版本升级之后,某些功能的升级可以减少我们平时使用的代价,提升数据存取的性能,综合考虑之下决定对某些集群进行升级。

2、操作目标:

l 目标集群相关联的各业务接入系统的升级

l 目标集群相关的监控、数据迁移等支持系统的升级

l 目标集群中部署的各类业务插件

3、环境准备:

l 集群接入方梳理

l 集群使用方式梳理

l 集群升级影响范围评估

l 调用关系梳理

4、迁移步骤:

l 现有数据备份

l 对应配置、插件等升级

l 新集群规划

l 新集群初始化

l 现有数据迁移

l 数据双写

l 数据校验

l 服务灰度、蓝绿发布

l 流量部分切换,使用状态监控

l 流量完整切换,旧集群下线

5、注意点:

l 数据备份及双写:在不影响线上使用的前提下保证数据的完整性,在数据切换之后保留一段时间数据双写等流程,以免因为各种问题造成的数据异常,需要进行回滚之类的操作

l 流量逐步切换:在新索引构建完成之后,可以逐步将线上流量切到新索引(集群)并保留旧索引一段时间,同时要严格监控和测试线上服务的表现,在完全可靠之前要随时做好切回旧索引的准备

l 数据质量监控:新上线的索引(集群)可能存在一些短时间内无法发觉的数据异常,迁移之后的一段时间中可以考虑加入包括数据比较、数据分布报表等在内的数据监控,以保证新索引的数据质量

l 数据备份的保存:数据通过 snapshot 或者其他方式导出的文件,可以考虑多保留几个滚动周期或者直接保存在文件系统等冷存储,用来应对后续可能的数据恢复、校验、审计等需求

 

节点替换大致流程如图所示


image.png

打分插件开发

 

1、背景:某些使用场景中,某些 Elasticsearch 的召回中需要嵌入很复杂的算分过滤公式,每次通过传入script 驱动 Elasticsearch 进行得分计算会严重拖慢 Elasticsearch 的运算效率。为此,我们权衡了内置打分插件、外置重排服务等多个解决方案之后,选择了自研打分插件的方式进行统一处理。

2操作目标:

l 所有业务集群

l 所有业务召回服务

3、环境准备:

l 集群负载监控

l 分数调整公式梳理

l 算分插件实现方式调研

4、实现步骤:

l 对应算分插件开发

l 相关服务召回逻辑升级

l 测试集群部署

l 数据结果交叉对比

5、注意点:

l 数据测试:搜索类的结果不同于普通业务系统是通过条件过滤,而是依靠打分进行召回、排序等,所以它的结果可能不是孤独的结果集,这里需要测试同学深入的理解算分、过滤逻辑,构建专门的测试脚本进行测试

l 结果运营:由于结果的计算是通过柔性算分来实现的,需要产品同学在对比现存脚本输出的结果和新的插件输出的结果,人工评价结果的优劣,以便未来更好的迭代运算结果


image.png


小结

 

本节就一个搜索引擎类项目的使用场景中,对 Elasticsearch 的部署、使用等方面进行了简要描述,并就几个真实的使用场景进行了分析和讨论,希望可以在读者遇到类似的使用场景时带来些参考。

 

创作人简介:

死敌wen,十余年 IT 老兵,从售前做到运维,从后端做到 HR 和猎头,Hands on 过几乎

IT 生命周期的整个过程,不说样样精通,只希望能和不同岗位的同学尽可能站在一个Baseline上进行沟通和交流。希望能通过自己的一点努力,给更多的同学带来一些积极的影响,足矣。

博客:https://blog.csdn.net/weixin_40601534

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
1月前
|
存储 运维 监控
超越传统模型:从零开始构建高效的日志分析平台——基于Elasticsearch的实战指南
【10月更文挑战第8天】随着互联网应用和微服务架构的普及,系统产生的日志数据量日益增长。有效地收集、存储、检索和分析这些日志对于监控系统健康状态、快速定位问题以及优化性能至关重要。Elasticsearch 作为一种分布式的搜索和分析引擎,以其强大的全文检索能力和实时数据分析能力成为日志处理的理想选择。
105 6
|
1月前
|
人工智能
云端问道12期-构建基于Elasticsearch的企业级AI搜索应用陪跑班获奖名单公布啦!
云端问道12期-构建基于Elasticsearch的企业级AI搜索应用陪跑班获奖名单公布啦!
172 2
|
1月前
|
自然语言处理 搜索推荐 关系型数据库
elasticsearch学习六:学习 全文搜索引擎 elasticsearch的语法,使用kibana进行模拟测试(持续更新学习)
这篇文章是关于Elasticsearch全文搜索引擎的学习指南,涵盖了基本概念、命令风格、索引操作、分词器使用,以及数据的增加、修改、删除和查询等操作。
20 0
elasticsearch学习六:学习 全文搜索引擎 elasticsearch的语法,使用kibana进行模拟测试(持续更新学习)
|
2月前
|
自然语言处理 搜索推荐 数据库
高性能分布式搜索引擎Elasticsearch详解
高性能分布式搜索引擎Elasticsearch详解
84 4
高性能分布式搜索引擎Elasticsearch详解
|
2月前
|
存储 缓存 自然语言处理
深度解析ElasticSearch:构建高效搜索与分析的基石
【9月更文挑战第8天】在数据爆炸的时代,如何快速、准确地从海量数据中检索出有价值的信息成为了企业面临的重要挑战。ElasticSearch,作为一款基于Lucene的开源分布式搜索和分析引擎,凭借其强大的实时搜索、分析和扩展能力,成为了众多企业的首选。本文将深入解析ElasticSearch的核心原理、架构设计及优化实践,帮助读者全面理解这一强大的工具。
177 7
|
1月前
|
开发框架 监控 搜索推荐
GoFly快速开发框架集成ZincSearch全文搜索引擎 - Elasticsearch轻量级替代为ZincSearch全文搜索引擎
本文介绍了在项目开发中使用ZincSearch作为全文搜索引擎的优势,包括其轻量级、易于安装和使用、资源占用低等特点,以及如何在GoFly快速开发框架中集成和使用ZincSearch,提供了详细的开发文档和实例代码,帮助开发者高效地实现搜索功能。
118 0
|
1月前
|
自然语言处理 搜索推荐 Java
SpringBoot 搜索引擎 海量数据 Elasticsearch-7 es上手指南 毫秒级查询 包括 版本选型、操作内容、结果截图(一)
SpringBoot 搜索引擎 海量数据 Elasticsearch-7 es上手指南 毫秒级查询 包括 版本选型、操作内容、结果截图
49 0
|
1月前
|
存储 自然语言处理 搜索推荐
SpringBoot 搜索引擎 海量数据 Elasticsearch-7 es上手指南 毫秒级查询 包括 版本选型、操作内容、结果截图(二)
SpringBoot 搜索引擎 海量数据 Elasticsearch-7 es上手指南 毫秒级查询 包括 版本选型、操作内容、结果截图(二)
34 0
|
1月前
|
消息中间件 监控 关系型数据库
MySQL数据实时同步到Elasticsearch:技术深度解析与实践分享
在当今的数据驱动时代,实时数据同步成为许多应用系统的核心需求之一。MySQL作为关系型数据库的代表,以其强大的事务处理能力和数据完整性保障,广泛应用于各种业务场景中。然而,随着数据量的增长和查询复杂度的提升,单一依赖MySQL进行高效的数据检索和分析变得日益困难。这时,Elasticsearch(简称ES)以其卓越的搜索性能、灵活的数据模式以及强大的可扩展性,成为处理复杂查询需求的理想选择。本文将深入探讨MySQL数据实时同步到Elasticsearch的技术实现与最佳实践。
85 0
|
8天前
|
存储 安全 数据管理
如何在 Rocky Linux 8 上安装和配置 Elasticsearch
本文详细介绍了在 Rocky Linux 8 上安装和配置 Elasticsearch 的步骤,包括添加仓库、安装 Elasticsearch、配置文件修改、设置内存和文件描述符、启动和验证 Elasticsearch,以及常见问题的解决方法。通过这些步骤,你可以快速搭建起这个强大的分布式搜索和分析引擎。
22 5

相关产品

  • 检索分析服务 Elasticsearch版