我的索引有大约10万条记录。 当我试图在一个字段(大约2米)中找到区别时,我的Java内存不足。 我是否可以在此聚合上实现扫描和滚动,以便在较小的部分中检索相同的数据。
由于
答案 0 :(得分:1)
检查你为ElasticSearch分配了多少内存,因为它被优化为超级快,它喜欢消耗大量内存。 http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/setup-configuration.html
我不确定这是否适用于基数聚合(或者您使用的是术语汇总吗?),但我使用" doc_values"取得了一些成功。 fielddata格式(参见http://www.elasticsearch.org/blog/disk-based-field-data-a-k-a-doc-values/),这需要更多的磁盘空间,但在RAM中保留较少的东西。你有多少不同的价值观?返回带有百万个不同值的术语聚合的JSON响应将会相当大。基数聚合只计算不同值的数量而不返回其各自的值。
您还可以尝试使用大量分片重新编制数据索引,太大的分片不会执行以及一些较小的分片。