ES数据可靠性分析

ES作为全文检索兼存储系统,数据可靠性至关重要,本文讨论ES是如何实现数据可靠性的。ES底层基于Lucene,所以有必要先搞清楚一些相关的概念。refresh && flush && commitLucene中,有flush和commit的概念。所谓flush,就是定期将内存Buffer里面的数据刷新到Directory这样一个抽象的文件存储层,其实就是生成segment。需要注意的是,因为...

Lucene系列(10)——相似度评分机制浅析(终篇)

注:本文基于Lucene 8.2.0 版本。本文是Lucene系列的终篇,在这篇文章中,我们会简单聊一下Lucene的相似度评分机制。TF-IDFBag-of-words模型先介绍一下NLP和IR领域里面非常简单且使用极其广泛的bag-fo-words model,即词袋模型。假设有这么一句话:"John likes to watch movies. Mary likes movies to...

Lucene系列(9)——QueryParser介绍

注:本文基于Lucene 8.2.0 版本。本文介绍一个比较“特殊”的查询API——QueryParser,它的特殊之处在于定义了一些查询语法,通过这些语法几乎可以实现前文介绍的所有Query API提供的功能,但它的存在并不是为了替换那些API,而是用在一些交互式场景中。本文不会再细述Lucene各个查询的含义及用法(比如什么是edit distance),所以如果你还不熟悉,请务必先阅读...

Lucene系列(8)——常用Query介绍

注:本文基于Lucene 8.2.0 版本。搜索是使用Lucene的根本目的,本文介绍Lucene提供的常用查询。下面的讲述中,会以之前《Lucene系列(2)——代码实践》文章中4首短诗的索引数据为例进行查询,你可以先阅读那篇文章构建索引。在Lucene中,Term是查询的基本单元(unit),所有查询类的父类是org.apache.lucene.search.Query,本文会介绍下图中...

Lucene系列(7)——索引存储文件介绍

注:本文基于Lucene 8.2.0 版本。本文讨论Lucene底层索引数据存储。对于绝大数多人来说了解Lucene的上层概念足矣,无需关注底层的存储格式。所以本文虽然是讨论底层数据存储的,但也不会深入到具体的数据结构、压缩算法等。如果你有兴趣,可以查看对应版本的Lucene Java doc(8.2.0版本的链接已经附在文末)。另外,如果你对index、document、term、segm...

Lucene系列(6)——字段及其属性

注:本文基于Lucene 8.2.0 版本。回忆一下之前文章中创建字段(Field)的一些代码片段:// 片段1 Field pathField = new StringField("path", file.toString(),Field.Store.YES); // 片段2 FieldType fieldType = new FieldType(); fieldTy...

Lucene系列(5)——倒排索引、Token与词向量

注:本文基于Lucene 8.2.0 版本。上文我们对Analyzer的原理和代码进行了分析,主要偏重流程,这篇文章来分析Analyzer的输出细节——Token。对原始数据进行Analyze的终极目的是为了更好的搜索,所以还会讨论和搜索相关的倒排索引和词向量(Term Vector)。倒排索引(Inverted Index)和正向索引(Forward Index)我们用一个例子来看什么是倒...
最近评论
luke但这样不是会造成数据倾斜,导致负载不均衡吗
小程Markdown写数学公式其实蛮坑的,不支持实时显示。当然也可能是我用的MarkdownPad...
小程倪师哥你好,我也是西电的,我最近也在弄个人主页,请问这个网站您自己发博客的时候是直接写html...
yy你后面一次明显心率高很多,特别是耐力部分,大概要150以上。感觉这个跟高心率的持续时间相关性特别大。
lilimon楼主用的是什么版本?github issue url在哪里?新版本会出现这样的问题吗?很多人应...
jie作者大大,您好。看了文章,我有一个问题。就是文中您说:“当然,很多时候自定义路由是为了减少查询...
徐小鹏其实对于TOB领域,一般Routing会用于一个租户(即公司ID)的概念,用了Routing起...
tina第二个代码块的第6行,引用是low-level的
白色风车beforeMethod的断点没有拦截住,但是UI的trace界面能看到请求了,应该启动成功了...
31(ó﹏ò。)a好棒