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...

ES中Term Aggregation的准确性问题讨论

本文讨论ElasticSearch Bucket Aggregations中的Term Aggregation结果准确性的问题,所有测试基于ES 7.1.0版本,DSL语句通过Kibana dev tool执行。问题演示我们先来看一个查询不准确的例子,该例子借鉴自官方文档(链接见文末),但为了操作方便,减小了数据规模。创建一个名为products,包含3个shard,0个副本的索引,及一个k...

详解ElasticSearch中的路由(_routing)机制

注:本文的所有测试基于ES 7.1.0版本。ES中的路由(routing)机制决定一个document存储到索引的哪个shard上面去,即文档到shard的路由。计算公式为:shard_num = hash(_routing) % num_primary_shards其中_routing是路由字段的值,默认使用文档的ID字段:_id。如果我们想自己控制数据的路由规则的话,那可以修改这个默认值...
站点总览
  • 文章总数:290篇
  • 分类总数:11个
  • 评论总数:460条
  • 运行时间:7年8天
最近评论
Michael翔哈哈哈,希望将来有机会学习学习你的「养娃体系1.0」和「理财体系1.0」
蟋蟀只是在本地测试,我生成的镜像名称叫flink:1.12.0-scala_2.12-java8,...
蟋蟀application模式下提交任务成功后,之前起client作用的在集群端运行的应用实例会一...
蟋蟀我在mac机器上安装好了minikube,并按照上述步骤成功构建了flink 1.12版本的d...
刘小新感谢作者的无私奉献,收获很大∠( ᐛ 」∠)_
刘小新给作者的辛苦劳动点个赞!
刘小新作者Lucene系列讲的真是太好了,佩服!!!
Peter大佬,能否加个友链呢?向您学习的
Michael翔虽然看似基础,但是深入研究并不简单,赞~PS:最后的「##总结」,语法应该少了个空格啦~
徐小鹏小米手环5的睡眠监测确实不行,