Ric*_*out 5 elasticsearch kibana
我正在使用Kibana来显示一些(Elasticsearch)数据,但我想用"Count" 小于 1000(X)过滤掉所有结果.
我正在使用带有"count Aggregation"的Y轴,这是我要过滤的计数.我尝试按照几个在线资源的建议添加min_document_count,但这并没有改变任何东西.任何帮助将不胜感激.
我的整个Kibana"数据"标签:
使用min_doc_countwith order: ascending不会像你一样工作.
TL; DR:增加shard_size和/或shard_min_doc_count应该做的伎俩.
如文件所述:
min_doc_count标准仅在合并所有分片的本地术语统计信息后应用.
这意味着当您使用带有参数大小和min_doc_count以及降序的术语聚合时,Elasticsearch会检索数据集中较不频繁的术语大小,并过滤此列表以仅保留doc_count> min_doc_count的术语.
如果你想要一个例子,给定这个数据集:
terms | doc_count
----------------
lorem | 3315
ipsum | 2487
olor | 1484
sit | 1057
amet | 875
conse | 684
adip | 124
elit | 86
Run Code Online (Sandbox Code Playgroud)
如果执行该汇聚size=3和min_doc_count=100Elasticsearch会首先计算3个少流连方面:
conse: 684
adip : 124
elit : 86
Run Code Online (Sandbox Code Playgroud)
然后过滤doc_count>100,所以最终的结果是:
conse: 684
adip : 124
Run Code Online (Sandbox Code Playgroud)
即使您希望"amet"(doc_count = 875)出现在列表中.Elasticsearch在计算结果时松散此字段,但最终无法检索它.
如果您的情况如此,那么doc_count <1000的条款数量很多,以至于它们填满了您的列表,然后在过滤阶段之后,您就没有结果了.
每个人都想应用过滤器然后对结果进行排序.我们能够使用较旧的数据存储区来实现这一点,这很不错.但Elasticsearch旨在扩展,因此它默认关闭之前使用的一些魔法.
为什么?因为对于大型数据集,它会破坏.
例如,假设您的索引中有800,000个不同的术语,数据分布在不同的分片上(默认为4),可以分布在其他机器上(每个分片最多1台机器).
当请求doc_count> 1000的条款时,每台机器必须计算几十万个计数器(超过200,000个,因为某个术语的某些出现可能在一个分片中,而另一个出现在另一个分片中,等等).而且,即使分片只看到一次结果,其他分片可能已经看到了999次,但在合并结果之前它不能丢弃信息.所以我们需要通过网络发送超过100万个计数器.所以它很重,特别是如果经常这样做的话.
因此,默认情况下,Elasticsearch将:
doc_count每个分片中的每个术语.shard_min_doc_count.size * 1.5 + 10(shard_size)术语发送到节点.如果订单是递增的话,它将是不常见的术语,否则是最常见的术语.min_doc_count过滤器.size最多/不太频繁的结果.是的,当然,我说这个行为是默认的.如果您没有庞大的数据集,可以调整这些参数:)
如果你不 OK精度有所损失:
将shard_size参数增加到大于[your number of terms with a doc_count below your threshold]+ [the number of values you want if you want exact results].
如果你想要所有的结果doc_count>=1000,把它设置为字段的基数(不同术语的数量),但后来我没有看到order: ascending.
如果您有许多术语,它会产生巨大的内存影响,如果您有多个ES节点,则会产生网络影响.
如果你可以准确地失去一些准确性(通常很小)
设置shard_size在此总和之间[the number of values you want if you want exact results].如果您想要更高的速度或者如果没有足够的RAM来执行精确计算,这将非常有用.这个的好价值取决于您的数据集.
使用术语聚合的shard_min_doc_count参数可以部分预过滤较不频繁的值.这是一种过滤数据的有效方法,特别是如果它们在您的分片之间随机分布(默认)和/或您没有大量分片.
您还可以将数据放在一个分片中.在准确度方面没有任何损失,但它对性能和扩展性有害.但是如果你有一个小数据集,你可能不需要ES的全部功能.
注意:不推荐使用期限聚合的降序(因为它在时间和硬件方面花费了很多精确),将来很可能会被删除.
PS:您应该添加Kibana生成的Elasticsearch请求,当Kibana返回数据而不是您想要的数据时,它通常很有用吗?当您点击屏幕截图中应该位于图表下方的箭头时,您可以在"请求"标签中找到它(例如:http://imgur.com/a/dMCWE).
| 归档时间: |
|
| 查看次数: |
9707 次 |
| 最近记录: |