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

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

- 阅读全文 -

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

注:本文的所有测试基于ES 7.1.0版本。ES中的路由(routing)机制决定一个document存储到索引的哪个shard上面去,即文档到shard的路由。计算公式为:shard_num = hash(_routing) % num_primary_shards其中_routing是路由字段的值,默认使用文档的ID字段:_id。如果我们想自己控制数据的路由规则的话,那可以修改这个默认值。修改的方式非常简单,只需要在插入数据的时候指定路由的key即可。虽然使用简单,但有许多的细节需要注意。我

- 阅读全文 -

使用Logstash将Kafka中的数据导入到ElasticSearch

本文介绍如何使用Logstash将Kafka中的数据写入到ElasticSearch。使用的各个组件版本如下:kafka_2.11-2.2.0elasticsearch 6.8.3logstash 6.8.3组件安装这里就不赘述了,主要说一下操作流程和需要注意的一些细节。Logstash工作的流程由三部分组成:input:输入(即source),必须要有,指明从那里读取数据。filter:过滤,logstash对数据的ETL就是在这个里面进行的,这一步可选。output:输出(即sink),必须

- 阅读全文 -

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

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

- 阅读全文 -

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

注:本文基于Lucene 8.2.0 版本。上文我们对Analyzer的原理和代码进行了分析,主要偏重流程,这篇文章来分析Analyzer的输出细节——Token。对原始数据进行Analyze的终极目的是为了更好的搜索,所以还会讨论和搜索相关的倒排索引和词向量(Term Vector)。倒排索引(Inverted Index)和正向索引(Forward Index)我们用一个例子来看什么是倒排索引,什么是正向索引。假设有两个文档(前面的数字为文档ID):a good student.a gift

- 阅读全文 -

Lucene系列(4)——Analyzer原理及代码分析

注:本文基于Lucene 8.2.0 版本。前面的文章中多次提到了分析器Analyzer,它就像一个数据加工厂,输入是原始的文本数据,输出是经过各种工序加工的term,然后这些terms以倒排索引的方式存储起来,形成最终用于搜索的Index。所以Analyzer也是我们控制数据能以哪些方式检索的重要点,本文就带你来了解一下Analyzer背后的奥秘。内置的Analyzer对比Lucene已经帮我们内置了许多Analyzer,我们先来挑几个常见的对比一下他们的分析效果吧。看下面代码(源文件见Ana

- 阅读全文 -

Lucene系列(3)——术语总结

注:本文基于Lucene 8.2.0 版本。前两篇文章分别从理论和代码角度概览了Lucene的功能,在开始各个模块的深入学习之前,我们先来总结一下之前提到的一些概念、术语,因为这些会贯穿后面几乎所有的文章,所以有必要理解清楚。其中有些概念是Lucene定义的,有些则是通用的IR领域术语。我画了一个索引整体的逻辑结构图,如下所示:我们根据图来介绍各个概念术语。索引(Index)对于初学全文检索的人来说,索引这个词非常具有迷惑性,主要原因是它有两个词性:动词:做动词时,一般英文写为“indexing

- 阅读全文 -

Lucene系列(2)——代码实践

注:本文基于Lucene 8.2.0 版本。上篇文章《Lucene系列(1)——理论介绍》中我们说了搜索的流程分前台用户查询流程和后台索引构建流程。本文就借助Lucene(目前最新的8.2.0版本)来实现这两个流程。当然,我们说了Lucene并不负责数据采集和提取,所以为了简单起见,我从网上找了几首精美的英文短诗作为原始数据,你可以认为这就是爬虫从互联网上面爬取并且经过一些初步处理的数据(删除了HTML标签,提取了诗的内容)。原始数据原始数据为4首英文短诗,每个诗对应一个文件,文件名为诗名。这里

- 阅读全文 -

微信公众号

随机文章

最近回复

  • repostone: 非技术的路过。
  • NYC: 确认一下你配置的调度策略是Fair,而不是Capacity,不要...
  • NYC: 这个没问题,我文章里面说的是策略,配置的时候是通过CDH配置的。...
  • 一方: 但是我的action队列抢占了资源,导致action不能并行,难...
  • NYC: 是的,不管是哪个队列,队列内部只要有资源够action/lanu...
  • 一方: 老铁,我想问下,你分配好队列,然后固定了lancher队列的am...
  • 一方: https://blog.csdn.net/bigdatapri...
  • NYC: 1,我的解决方案是不可能完全杜绝死锁的,我目前也没有发现比较好的...
  • 一方: 老铁你好!看了下你的解决方案,感觉还是无法解决死锁的问题啊,假如...
  • luke: **感谢分享**

分类

标签