术语过滤器会导致内存急剧增加

时间:2014-11-21 07:59:36

标签: elasticsearch memory-leaks

使用的术语过滤器:

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设置仅包含单个节点和索引 仅包含一个分片和0个副本。版本 elasticsearch是0.90.7
  • 上述字段仅为前8个字段。实际上 我们执行的术语过滤器有350个字段。

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

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

有人可以解释为什么会出现内存峰值吗?

1 个答案:

答案 0 :(得分:0)

  1. 这是Elasticsearch的旧版本
  2. 您将一次性返回50,000条记录
  3. 排序50k记录
  4. 你的文件很大 - 350个字段。
  5. 您可以改为返回较少数量的记录吗?然后翻阅它们? Scan and Scroll可以帮到你。

    目前尚不清楚您是否已将索引编入索引 - 这可能有所帮助,因为从磁盘读取_source可能会产生内存开销。