ES标签搜索并解决评分排序问题

一、概述 需求: 最近在做一个新闻项目,有这样一个需求,如下: 用户根据视频内容手动创建标签,标签个数不限 在视频详情页提供根据标签推荐视频功能,即按本视频的标签进行搜索,标签匹配多的排在前面,匹配少的排在后面 经过分析、调研,以单字段存储标签,尝试了下面的几种方案,这里一并写出 不可行方案: 字段 ... »

Elasticsearch索引生命周期管理方案

一、前言 在 Elasticsearch 的日常中,有很多如存储 系统日志、行为数据等方面的应用场景,这些场景的特点是数据量非常大,并且随着时间的增长 索引 的数量也会持续增长,然而这些场景基本上只有最近一段时间的数据有使用价值或者会被经常使用(热数据),而历史数据几乎没有作用或者很少会被使用(冷数 ... »

Elasticsearch 第七篇:父子结构mapping设计以及相关查询

首先在 Elasticsearch 较高版本中,是抛弃掉 type 这一概念的,我们做搜索时,时常需要涉及到父子数据结构,以下通过建立电影索引库,来示范一下。 一部电影有多个演员,父级为电影 film ,子级为演员 actor 。 第一步 mapping设计 在以下代码中,注意一对多是如何通过 re ... »

Elasticsearch 第六篇:聚合统计查询

前面一直没有记录 Elasticsearch 的聚合查询或者其它复杂的查询。本篇做一下笔记,为了方便测试,索引数据依然是第五篇生成的测试索引库 db_student_test ,别名是 student_test 第一部分 基本聚合 1、最大值 max、最小值 min、平均值 avg 、总和 sum ... »

使用painless将ElasticSearch字符串拆分为数组

一、实现场景: ES字符串类型字段imgs,有些历史数据是用逗号分隔的字符串,需要将历史数据拆分为数组形式。 示例: 1.构造测试数据: 创建索引并推送几条典型的历史数据,涵盖以下几种情况: 逗号分隔字符串; 数组类型; 长度为0的字符串; 空数组。 PUT test_cj/test/id_1 { ... »

Elasticsearch(5):添加文档

ES中,每个索引都将被划分为若干分片,每个分片可以有多个副本。这些副本共同组成复制组,复制组中的分片在添加或删除文档时必须保持同步,否则,从一个副本中读取的数据将与从另一个副本读取的结果有差异。保持复制组中分片数据同步以及从它们中读取的过程称为数据复制模型。 ... »

SpringBoot整合Elasticsearch游标查询(scroll)

游标查询(scroll)简介 scroll 查询 可以用来对 Elasticsearch 有效地执行大批量的文档查询,而又不用付出深度分页那种代价。 游标查询会取某个时间点的快照数据。 查询初始化之后索引上的任何变化会被它忽略。 它通过保存旧的数据文件来实现这个特性,结果就像保留初始化时的索引 视图 ... »

Elasticsearch(4):映射

ES中的映射(mapping)是用于定义索引中文档以及文档中的字段如何被存储和索引(动词)的一种机制,例如,通过映射我们可以进行如下的这些定义: 索引文档中,哪些字符型字段应该被当做全文本类型; 哪些字段是数值型、时间日期型或者地理空间数据; 定义时间日期型字段的格式; 为动态添加的字段自定... ... »

Elasticsearch(3):别名

ES中可以为索引添加别名,一个别名可以指向到多个索引中,同时在添加别名时可以设置筛选条件,指向一个索引的部分数据,实现在关系数据库汇总的视图功能,这就是ES中别名的强大之处。别名是一个非常实用的功能,为我们使用索引提供了极大的灵活性,许多ES的API都支持用别名来代替真实索引名。 ... »

ElasticSearch 索引 VS MySQL 索引

前言 这段时间在维护产品的搜索功能,每次在管理台看到 elasticsearch 这么高效的查询效率我都很好奇他是如何做到的。 这甚至比在我本地使用 MySQL 通过主键的查询速度还快。 为此我搜索了相关资料: 这类问题网上很多答案,大概意思呢如下: ES 是基于 Lucene 的全文检索引擎,它会 ... »

日志分析平台ELK之搜索引擎Elasticsearch集群

什么是ELK?ELK是Elasticsearch、Logstash、Kibana这三个软件的首字母缩写;其中elasticsearch是用来做数据的存储和搜索的搜索引擎;logstash是数据收集处理平台,它能够对特定的数据做分析、切词、收集、过滤等等处理,通常用于对日志的处理;kibana是用于... ... »