带你读《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实现地理位置查询
本实验将分别介绍如何使用Elasticsearch7.10版本进行全文检索、多语言检索和地理位置查询三个Elasticsearch基础检索子场景的实现。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
3天前
|
运维 监控 Java
探索Elasticsearch在Java环境下的全文检索应用实践
【6月更文挑战第30天】在大数据背景下,Elasticsearch作为分布式搜索分析引擎,因其扩展性和易用性备受青睐。本文指导在Java环境中集成Elasticsearch,涉及安装配置、使用RestHighLevelClient连接、索引与文档操作,如创建索引、插入文档及全文检索查询。此外,还讨论了高级查询、性能优化和故障排查,帮助开发者高效处理非结构化数据全文检索。
15 0
|
6天前
|
存储 监控 固态存储
elasticsearch索引生命周期管理(ILM):原理和实践
elasticsearch索引生命周期管理(ILM):原理和实践
|
6天前
|
存储 JSON API
Elasticsearch中的模板:定义、作用与实践
Elasticsearch中的模板:定义、作用与实践
|
7天前
|
搜索推荐 Java 数据库
Java中的ElasticSearch集成与实践
Java中的ElasticSearch集成与实践
|
20天前
|
存储 搜索推荐 关系型数据库
【搜索引擎】elastic search核心概念
【搜索引擎】elastic search核心概念
20 0
|
2月前
|
存储 自然语言处理 搜索推荐
分布式搜索引擎ElasticSearch
Elasticsearch是一款强大的开源搜索引擎,用于快速搜索和数据分析。它在GitHub、电商搜索、百度搜索等场景中广泛应用。Elasticsearch是ELK(Elasticsearch、Logstash、Kibana)技术栈的核心,用于存储、搜索和分析数据。它基于Apache Lucene构建,提供分布式搜索能力。相比其他搜索引擎,如Solr,Elasticsearch更受欢迎。倒排索引是其高效搜索的关键,通过将词条与文档ID关联,实现快速模糊搜索,避免全表扫描。
121 3
|
2月前
|
数据采集 数据挖掘 索引
Elasticsearch “指纹”去重机制,你实践中用到了吗?
Elasticsearch “指纹”去重机制,你实践中用到了吗?
36 7
|
2月前
|
运维 监控 Java
探索Elasticsearch在Java环境下的全文检索应用实践
【4月更文挑战第17天】本文介绍了在Java环境下使用Elasticsearch实现全文检索的步骤。首先,简述了Elasticsearch的功能和安装配置。接着,通过Maven添加`elasticsearch-rest-high-level-client`依赖,创建`RestHighLevelClient`实例连接Elasticsearch。内容包括:创建/删除索引,插入/查询文档。还探讨了高级全文检索功能、性能优化和故障排查技巧。通过Elasticsearch,开发者能高效处理非结构化数据,提升应用程序价值。
|
2月前
|
监控 搜索推荐 安全
面经:Elasticsearch全文搜索引擎原理与实战
【4月更文挑战第10天】本文是关于Elasticsearch面试准备的博客,重点讨论了四个核心主题:Elasticsearch的分布式架构和数据模型、CRUD操作与查询DSL、集群管理与性能优化,以及安全与插件扩展。文中通过代码示例介绍了如何进行文档操作、查询以及集群管理,并强调理解Elasticsearch的底层原理和优化策略对面试和实际工作的重要性。
41 6
|
2月前
|
监控 数据可视化 搜索推荐
初识Elasticsearch:打造高效全文搜索与数据分析引擎
【4月更文挑战第7天】Elasticsearch,一款由Elastic公司开发的分布式搜索引擎,以其全文搜索和数据分析能力在全球范围内广泛应用。它基于Apache Lucene,支持JSON,适用于日志分析、监控等领域。Elasticsearch的亮点包括:精准快速的全文搜索,通过倒排索引和分析器实现;强大的数据分析与实时响应能力,提供丰富聚合功能;弹性扩展和高可用性,适应水平扩展和故障恢复;以及完善的生态系统,与Kibana、Logstash等工具集成,支持多种编程语言。作为大数据处理的重要工具,Elasticsearch在企业级搜索和数据分析中扮演关键角色。
51 1

热门文章

最新文章

相关产品

  • 检索分析服务 Elasticsearch版