分布式搜索引擎
分布式搜索引擎
爱喝咖啡的程序员
这个作者很懒,什么都没留下…
展开
-
Elasticsearch from+size与scroll混合使用实现深度分页搜索
目录一. 需求二. 思考三. 实现方案一. 需求环境准备: JDK1.8 Elasticsearch7.3.1 RestHighLevelClient客户端对Elasticsearch做深度分页,比如第1500页,每页20条记录,且需要支持前后翻页。二. 思考由于index.max_result_window的限制,直接使用from+size无法搜索满足条件10000条以上的记录。如果贸然增大index.max_result_window值,那么你怎么知道系统未来会在索引内存多少条数据?就算这一次原创 2020-07-29 16:53:37 · 1479 阅读 · 0 评论 -
Elasticsearch 搜索数量不能超过10000的解决方案
目录一. 问题描述二. 问题分析三. 解决方案3.1 调大index.max_result_window(不推荐)3.2 cardinality(不推荐)3.3 track_total_hits(推荐)一. 问题描述开发环境: JDK1.8、Elasticsearch7.3.1、RestHighLevelClient问题: 最近在通过Java客户端操作ES进行分页查询(from+size)时,需要返回满足条件的数据总数。我发现满足条件的数据总数一旦超过10000条,使用SearchResponse的g原创 2020-07-29 14:51:52 · 11084 阅读 · 2 评论 -
Elasticsearch 搜索模板详解
Elasticsearch 搜索模板详解一. 为什么使用搜索模板二. template入门案例2.1 标准形式2.2 toJson形式2.3 join方法传参2.4 default value形式三. 记忆template并实现重复调用3.1 Elasticsearch保存template3.2 调用 template3.3 查询y已dingyi de 特么一. 为什么使用搜索模板日常开发时,通常我们都不需要使用搜索模板,但如果遇到非常复杂的业务场景,如金融、医药等,可能一次搜索需要传入或返回几十个字段原创 2020-05-24 22:53:03 · 1014 阅读 · 0 评论 -
Elasticsearch term vector
Elasticsearch term vector一. 概念二. term vector数据的出现时机三. 数据探查一. 概念term vector用于获取document中某个field内各个不可分割的term(词条)的相关统计信息,它们包括以下内容:term information: term frequency in the field,term在一个field中出现的次数。ter...原创 2020-05-03 20:05:53 · 862 阅读 · 1 评论 -
Elasticsearch ES-Document数据建模详解
Elasticsearch 数据建模一. 关系型数据库与Elasticsearch Document数据模型对比二. 模拟关系型数据库进行数据建模三. document数据建模一. 关系型数据库与Elasticsearch Document数据模型对比二. 模拟关系型数据库进行数据建模三. document数据建模...原创 2020-04-27 13:16:38 · 1165 阅读 · 0 评论 -
Elasticsearch 内存使用
Elasticsearch 内存使用一. 初窥内存二. 内存分布详解2.1 Elasticsearch heap2.2 Lucene (off-heap)一. 初窥内存从图中可以看到,整个物理内存被划分成了两块区域: Elasticsearch heap(分配给Elasticsearch的堆内存)、 Lucene(off-heap) 非堆内存。平常我们在elasticsearch.yml中...原创 2020-04-19 14:11:15 · 1109 阅读 · 0 评论 -
Elasticsearch 聚合搜索技术深入
Elasticsearch 聚合搜索技术深入一. bucket和metric概念简介二. 聚合统计案例2.1 分组统计数量2.2 多层嵌套聚合2.3 统计最大、最小值以及总和2.4 分组后,对组内的数据进行排序,只取前几条数据2.5 histogram 区间统计2.6 date_histogram 区间分组2.7 global bucket2.8 aggs order2.9 search agg...原创 2020-04-13 14:22:01 · 2332 阅读 · 0 评论 -
Elasticsearch 搜索技术深入
Elasticsearch 搜索技术深入一. 手工控制搜索结果的精准度1.1 搜索包含查询条件分词后所有词条的数据1.2 搜索包含查询条件分词后一定比例数量的词条的数据1.3 match的底层转换二. boost权重控制2.1 多shard环境中相关度分数不准确问题三. 基于dis_max实现多字段搜索3.1 dis_max的基本用法3.2 使用tie_breaker参数优化dis_max的搜索效...原创 2020-04-13 14:18:25 · 1076 阅读 · 0 评论 -
Elasticsearch Doc values
ES存储document时,会根据数据对应的field类型建立对应的索引。通常来说只创建倒排索引,倒排索引是为了搜索而存在的,但如果对数据进行排序、聚合、过滤等操作时,再使用倒排索引就明显不适合了。这个时候就需要在ES中创建正排索引(doc values)。doc values保存在磁盘中,如果OS Cache系统缓存的空间足够大,ES会缓存doc values,因此性能还是很不错的。问: 为什...原创 2020-04-13 14:10:47 · 736 阅读 · 0 评论 -
Elasticsearch 相关度评分算法
Elasticsearch 相关度评分算法一. 概念一. 概念relevance score算法用于计算document与搜索条件的相关匹配度。ES使用了term frequency / inverse document frequency 算法,简称TF/IDF算法,它是ES相关度评分算法的一部分,也是 最重要的一部分。TF 对搜索条件进行分词后,各词条在document中指定的...原创 2020-04-13 14:09:44 · 4286 阅读 · 0 评论 -
Elasticsearch Document写入、删除、查询以及搜索原理
Document写入原理一. Document写入原理一. Document写入原理ES为了实现进实时搜索,在写入Document时利用了Buffer(内存),OS Cache(系统缓存,属于系统内存的一部分),Disk(磁盘)三种存储方式,尽可能的提升搜索的能力。ES的底层lucene实现的,在 luncene中一个index会被分为若干个数据段segment,每一个segment都会存放i...原创 2020-04-13 14:06:47 · 1069 阅读 · 0 评论 -
Elasticsearch 倒排索引与重建索引
倒排索引与重建索引一. 倒排索引1.1 倒排索引的结构1.2 倒排索引不可变的好处二. 重建索引一. 倒排索引1.1 倒排索引的结构(1)包含这个关键词的document list(2)包含这个关键词的所有document的数量:IDF(inverse document frequency)(3)这个关键词在每个document中出现的次数:TF(term frequency)(4)这...原创 2020-04-13 14:04:34 · 1146 阅读 · 0 评论 -
Elasticsearch Filter执行原理
Filter执行原理一. 执行流程1.1 构建bitset1.2 遍历bitset1.3 缓存bitset二. 执行特性2.1 query和filter的执行顺序2.2 bitset cache auto_update2.3 bitset cache应用的时机filter底层原理涉及到两块内容: bitset机制和cache机制。一. 执行流程假设现在有一批数据的倒排索引如下:Wo...原创 2020-04-13 14:02:36 · 1592 阅读 · 0 评论 -
Elasticsearch高级篇(目录)
Elasticsearch 底层实现原理一. Filter执行原理1.1 执行流程1.1.1 构建bitset1.1.2 遍历bitset1.1.3 缓存bitset1.2 执行特性1.2.1 query和filter的执行顺序1.2.2 bitset cache auto_update1.2.3 bitset cache应用的时机二. 倒排索引2.1 倒排索引的结构:2.2 倒排索引不可变的好处...原创 2020-03-22 23:19:49 · 1734 阅读 · 0 评论 -
SpringBoot整合Elasticsearch7.6.1
文章目录一. 概述二. 集成2.1 maven中添加依赖2.2 配置文件2.3.1 yaml2.3.2 properties2.3.3 配置类三. Api调用四. 拓展4.1 修改IK源码,实现热词动态更新一. 概述本文记录了Spring Boot与Elasticsearch的整合方式,Spring boot的版本为2.1.9.RELEASE,Elasticsearch的版本为7.6.1。二...原创 2020-04-11 17:22:59 · 8896 阅读 · 2 评论 -
Elasticsearch 请求报错 Data too large
最近在使用公司Elasticseach 7.3.1时,经常报出以下错误,环境时好时坏:"[circuit_breaking_exception] [parent] Data too large, data for [<http_request>] would be [2052417488/1.9gb], which is larger than the limit of [20...原创 2020-03-24 22:21:19 · 10063 阅读 · 1 评论 -
Elastic search 7+ 去掉了type的原因
以下为官网原文 链接Initially, we spoke about an“index”being similar to a“database”in an SQL database, and a“type”being equivalent to a“table”.This was a bad analogy that led to incorrect assumptio...原创 2020-02-18 13:02:26 · 914 阅读 · 0 评论