2014-11-21 60 views
0

所使用的术语过滤器:期限滤波器导致存储器穗急剧

curl -XGET 'http://localhost:9200/my-index/my-doc-type/_search' -d '{ 
    "filter": { 
    "term": { 
     "void": false 
    } 
    }, 
    "fields": [ 
    [ 
     "user_id1", 
     "user_name", 
     "date", 
     "status", 
     "q1", 
     "q1_unique_code", 
     "q2", 
     "q3" 
    ] 
    ], 
    "size": 50000, 
    "sort": [ 
    "date_value" 
    ] 
}' 
  • void字段是boolean字段。
  • 索引商店大小为504mb。
  • elasticsearch setup只包含一个节点,索引 只包含一个分片和0个副本。弹性搜索 的版本是0.90.7
  • 上面提到的字段只是前8个字段。我们执行的实际的 术语过滤器有350个字段提到。

虽然商店大小只有504mb,但我们注意到内存大约增加2-3gb。

多次运行查询似乎不断增加内存。

有人可以解释为什么会出现这种内存尖峰?

回答

0
  1. 这是一个很老的版本Elasticsearch
  2. 的你在一个返回50,000条记录得到
  3. 排序的50K记录
  4. 你的文件是相当大 - 350场。

您是否可以返回更少数量的记录?然后通过他们的页面? Scan and Scroll可以帮助你。

目前还不清楚您是否对单个字段进行了索引 - 这可能有助于从磁盘读取_source可能会导致内存开销。

+0

与过滤器相匹配的实际记录只有17,000个。这是为了导出功能,所以分页不会有帮助。 – Ajay 2014-11-21 09:42:06

+0

商店规模与我们遇到的高峰之间的关系如何? – Ajay 2014-11-21 09:49:36

+0

返回的17k条记录是一个很大的数字。对于商店大小和秒杀之间的关系,请参阅我的回答中的第二段。 – 2014-11-21 09:54:09