小编Sha*_*cko的帖子

换行符或标点符号作为弹性搜索中的位置间隙

在弹性搜索中,有没有办法设置一个分析器,当遇到换行符或标点符号时会在标记之间产生位置间隙?

假设我使用以下无意义字符串(带换行符)作为其字段之一来索引对象:

The quick brown fox runs after the rabbit.
Then comes the jumpy frog.
Run Code Online (Sandbox Code Playgroud)

标准分析仪将生成以下具有相应位置的标记:

0 the
1 quick
2 brown
3 fox
4 runs
5 after
6 the
7 rabbit
8 then
9 comes
10 the
11 jumpy
12 frog
Run Code Online (Sandbox Code Playgroud)

这意味着match_phrase查询the rabbit then comes将匹配此文档作为匹配.有没有办法引进之间的位置差距rabbitthen使,除非它不匹配slop的出台?

当然,一种解决方法可能是将单个字符串转换为数组(每个条目一行)并position_offset_gap在字段映射中使用,但我真的宁愿用换行符保留一个字符串(并且最终的解决方案将涉及换行符的更大位置间隙比如标点符号).

analyzer elasticsearch

8
推荐指数
1
解决办法
1547
查看次数

elasticsearch聚合中的脚本范围

在Elasticsearch中,我想知道(子)聚合中使用的脚本范围内有哪些变量可用.

我已经阅读了脚本中的脚本文本评分资源以及大多数聚合类型的文档,但是根据具体情况找不到可以使用的内容的全面参考.

从我可以收集的内容来看,聚合中的大多数脚本都是按击中运行的,并且可以访问以下范围:

  • 文件字段,通过 doc['field_name'].*
  • 从索引解析的文档,通过 _source
  • 存储的字段,通过 _fields['field_name']
  • 文件得分,通过 _score
  • 碎片统计,通过 _index.*
  • 每个分片字段统计,通过 _index['field_name'].*
  • 每个分片术语统计,通过 _index['field_name']['term'].*

脚本度量聚集也公开了一个_agg在可变的每碎片&每次命中的脚本(INIT,地图&结合脚本)和一个_aggs在可变协调节点电平(降低脚本).当然,map脚本还可以访问上面定义的每个其他每个命中变量.我找不到指示是否_index*在每个分片脚本中可用的文档,但它似乎是逻辑的.此外,scripted_metric是我可以找到的分片或协调节点级别的脚本的唯一情况.

显着性条款聚集具有运行脚本得分的特殊情况,每个桶,在范围以下变量:

  • _subset_freq,
  • _superset_freq,
  • _subset_size,
  • _superset_size

但是它似乎没有访问其他依赖于桶的东西,比如桶密钥(term)或单值度量子聚合,这是一个很小的因为它非常有用(至少,我找不到任何东西)有关如何访问此类存储桶相关信息的文档).

条款聚合也具有值脚本(两个参数时的特殊情况field,并script定义),其只能访问一个_value变量.

这里总结的信息是准确/完整的吗?

elasticsearch

7
推荐指数
0
解决办法
575
查看次数

Java:来自TreeMap条目的迭代器?

在Java中,TreeMap<K,V>使用RB树来存储条目,允许使用顺序迭代map.entrySet().iterator(),同时保证在log(N)时间内插入和查找.

TreeMap中还提供了一些方法找到的上限和下限为指定键:map.floorEntry(k),map.ceilingEntry(),map.lowerEntry(k)map.higherEntry().但是,它们的返回值是一个Map.Entry<K,V>实例,并且不会直接允许访问相邻条目.考虑到它的关键,我想访问一个假想条目的潜在邻居.

有没有办法从TreeMap条目中获取迭代器或执行我想要做的事情?

更习惯于C++的std::map<K,V>课程,我在这里不知所措......

注意我可以使用除java.util之外的容器库来使用解决方案,只要它具有带有一些合理时间复杂度保证的有序映射容器即可.

java containers treemap

5
推荐指数
1
解决办法
233
查看次数

标签 统计

elasticsearch ×2

analyzer ×1

containers ×1

java ×1

treemap ×1