话题中间件与数据库 › Elasticsearch

中间件与数据库:Elasticsearch

Enrich Processor——Elasticsearch 跨索引关联数据新方式

在cluster1上有如a,b两索引,均有字段filed_a,索引a,b各自包含其它字段,建立新索引如c,要求c包含a索引全部文档,且在a和b索引关联字段 field_a 相同的文档中把b文档其它字段更新到索引c中。

京东云ClickHouse和ES双引擎设计在零售选品中的应用实践

涅槃选品是京东零售内的战略级bigboss项目,项目主要致力于构建商品底层能力,打通提报、投放流程,实现选品的线上化、规则化与智能化;通过多方协作盘货,充分表达营销、品类、运营/采销等多方意志。

业务上的多样化需求,导致在项目初期面临以下众多技术难点与挑战。

Elasticsearch 可以更改 Mapping 吗?如何修改?

最近几个线上问题,都和 Mapping 字段更新有关系,问题列表如下:

问题 1:

Mapping新创建后,还可以更新吗?

问题 2:

群友 A:有人知道怎么在kibana里面给索引新增,删除字段吗?

群友 B: 不就是改 mapping 吗

群友 A:怎么改?

群友 B:写dsl啊…

群友 A:只能加不能删吧?

问题 3:

各位同学们 现在有个业务需求帮忙看一下?

需求:将 A 索引中一个为 String 的字段修改为 boolean。

例: sdry:"1" -> sdry:true。

问题 4:

join 类型怎么修改 join,append一个新的child?

业务需要 append join children,官方也说可以 append,但是又没给方案,我尝试都失败了。

四个问题都可以归结为 Mapping 更新问题,我们一起梳理实践一把。

ElasticSearch 索引设计指南

ElasticSearch(以下简称:ES )是一个分布式、RESTful 风格的搜索和数据分析引擎。区别于传统关系型数据库(比如:MySQL、Oracle 等),ES 在定义数据模型和搜索方式上非常灵活,数据模型可以采用静态数据映射与动态数据映射,搜索方式也支持多维度类型的搜索(结构化数据、非结构化数据、地理位置、指标参数等)。如果对事务性要求不高或者事务性操作在 RDMS 端,可以考虑使用 ES 作为海量数据存储与检索分析的平台。用户在创建新索引时,可以直接写数据,所有配置走默认,收缩自如、十分灵活;也可以精细化评估,按照自己的业务需求,提前做好索引的 settings 和 mappings 的设置,未雨绸缪、尽在掌握。

Elasticsearch 脚本安全使用指南

  • Elasticsearch 脚本有没有替代方案?
  • 如何在 Elasticsearch 端限制脚本的使用?
  • 我们可以控制 Elasticsearch 脚本的使用吗?

Elasticsearch 检索性能优化实战指南

检索性能的优化涉及知识点比较零散,以官方文档的检索性能优化部分作为大框架和主线,结合实战经验和咨询经验用通俗易懂的语言做下解读。

Elasticsearch 如何实现相似推荐功能?

拿我们身边的算法“投喂”为主的头条、抖音、微信视频号等举例,如果你喜欢乒乓球,每天推送给你的都是乒乓球比赛视频集锦;如果你喜欢成功人士演讲,每天都是马云、马化腾、刘强东等商业巨鳄的演讲。

再拿电商的示例如下:比如我近期购买的吴军老师推荐的科普经典巨著《从一到无穷大》,京东会给我推荐樊登读书带火的书《微积分原理》。

Elasticsearch 线上问题实战——如何借助 painless 更新时间?

对于给定的时间字段值,如何用 painless 脚本实现减去 5 分钟的处理?

Elasticsearch 运行时类型 Runtime fields 深入详解

实战业务中,遇到数据导入后,但发现缺少部分必要字段,一般怎么解决?

比如:emotion 代表情感值,取值范围为:0-1000。

其中:300-700 代表中性;0-300 代表负面;700-1000 代表正面。

但实际业务中,我们需要:中性:0;负面:-1;正面:1。

如何实现呢?

Search indexing optimisation

Learn about the different optimisation techniques when building a search index.

基于MySQL binlog日志,实现Elasticsearch近实时同步实践

在我们的开发过程中,经常会在一个项目中使用多种数据库系统。在一些特定场景下,我们希望把数据从一种数据库,同步到另一种异构的数据库,以便进行数据分析统计、完成实时监控、实时搜索等功能。这个异构数据源同步的过程称为Change Data Capture(变化数据捕获)。

我们本文讨论的是Source为MySQL、Target为ElasticSearch的场景下,进行增量和全量同步操作过程。众所周知,MySQL数据库凭借其性能卓越、服务稳定、开放源代码、社区活跃等因素,成为当下最流行的关系型数据库,但是在数据量级较大或涉及到多表操作时,亦或是需要根据地理位置进行查询时,MySQL通常不能给我们很好的支持。

为了解决MySQL查询缓慢、无法查询的问题,我们通常采用ElasticSearch等进行配合检索。在传统方式中,将MySQL同步数据到ElasticSearch通常采用的是双写、MQ消息等形式,这些形式都存在着耦合高、性能差、丢失数据等风险。

所以我们需要探索出一套对业务无侵入的MySQL同步至ElasticSearch异构数据库的解决方案。本文将分别从增量同步、全量同步两个层面进行探讨。

Elasticsearch 线上问题排查——搞一天了,明天还要给客户解决这个问题

Elasticsearch 线上实战问题排查复盘。

如何从 0 到 1 搭建代码全局检索系统

前端团队的项目有几百个左右,想要查找某个接口 API 或者某个 NPM 包以及一些关键词在哪些项目中使用到,需要每个开发同学在自己维护的项目里全局搜索一遍或者写个脚本跑一遍,然后统计上去,费时费力。本文将为你介绍全局检索系统。

Elasticsearch 字段膨胀不要怕,Flattened 类型解千愁!

Elasticsearch Mapping 如果不做特殊设置,默认为 dynamic。dynamic 的本质就是:不加约束的动态添加字段。这样对某些日志场景,可能会产生大量的未知字段。字段如果持续激增,就会达到 Elasticsearch Mapping 层面的默认上限,对应设置和默认大小为:index.mapping.total_fields.limit:1000。

我们把这种非预期字段激增的现象或结果称为:字段膨胀。

拿自己线上环境示例,说一下 dynamic 的副作用。在一个实际业务环境,混淆了检索和写入的语法,会导致将检索语句动态认定为新增 Mapping 字段。

当然,如果是非常复杂的大 bool 检索语句,会导致 Mapping 变得非常复杂甚至会出现字段膨胀的情况。

Elasticsearch ORM框架

在使用Elasticsearch的过程中,你还在为构建Elasticsearch的DSL语句而苦恼?还在为构建复杂冗长的条件而头疼?还在为一次次的响应提取而奔溃?那么你需要一个简单方便易上手的ES ORM框架:ebatis!

Composite 聚合——Elasticsearch 聚合后分页新实现

在常规检索的基础上,用户期望返回基于特定字段的聚合结果,且用户期望分页查看检索和聚合结果。

如下图所示:以2020东京奥运会热点新闻亚洲飞人"苏炳添”为例,用户期望查看有关“苏炳添”的新闻,同时期望查看相同标题的相似文章列表。

Home - Wiki
Copyright © 2011-2024 iteam. Current version is 2.125.1. UTC+08:00, 2024-05-17 13:03
浙ICP备14020137号-1 $Map of visitor$