1

我没有看到这将如何完成,但是否有可能有一个使用间隔来给出每 X 次出现的统计信息的方面?例如,如果 net 是按日期排序的数字序列,例如:

1,2,3,4,5,6,7

我将间隔设置为 2,我想返回一个直方图,如:

count: 2
value: 3,

count: 2,
value: 7,

count: 2,
value: 11,

...
4

1 回答 1

3

Elasticsearch 不支持开箱即用的此类操作。可以编写这样的 facet,但它不是很实用,因为它需要编写非常复杂的自定义 facet 处理器,并且可以选择控制记录被分成碎片的方式(所谓的路由)。

在 elasticsearch 中,任何依赖于元素全局顺序的操作从架构的角度来看都是有问题的。Elasticsearch 将记录拆分为分片,包括搜索和分面计算在内的大多数操作都发生在分片上,然后将这些分片级操作的结果收集并合并为全局结果。这基本上就是 map/reduce 架构,也是 elasticsearch 横向扩展的关键。您的方面的最佳实现将需要更改路由,以便根据记录的顺序而不是 id 的哈希码将记录分成碎片。或者,可以通过将分片级阶段限制为仅提取字段值并在合并阶段执行构面的实际计算来完成。后一种方法似乎更实用,但同时它与简单地提取所有记录的字段值并在客户端进行计算并没有太大区别,这正是我在这里建议做的。只需使用所需的排序顺序提取所有值并计算客户端上的所有统计信息。如果索引中的记录数很大,可以使用滚动 API以使用多个请求检索所有记录。

于 2012-05-04T00:11:26.107 回答