Elasticsearch内存使用fielddata

时间:2017-02-27 07:00:38

标签: elasticsearch autocomplete

我在文章http://www.bilyachat.com/2015/07/search-like-google-with-elasticsearch.html之后使用ElasticSearch创建了一个简单的自动填充。

以下是一个简单的例子。 https://gist.github.com/jinkyou/ac92c0d9fc53860b703ac773af03b0da

首先,我没有将"fielddata": true设置为自动完成属性。 然后ES返回错误。

{
  "error": {
    "root_cause": [
      {
        "type": "illegal_argument_exception",
        "reason": "Fielddata is disabled on text fields by default. Set fielddata=true on [autocomplete] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory."
      }
}

因此,我将"fielddata": true添加到自动填充的属性中,并且工作正常。

但是在文档增加后,发生了[fielddata] Data too large, data for [autocomplete] would be larger than limit of [249416908/237.8mb]]错误。

这是我的问题。

这是实施“自动填充”的正确方法吗?

我虽然这是搜索引擎的常见功能,但在ES中没有它的建议。我是对的吗?

此功能需要'fielddata'吗?

我认为即使这个功能没有必要,我也需要它在短时间内做出回应。

如何减少fielddata大小?或者增加fielddata限制大小?

我会尝试减少max_shingle_size。如果有其他好方法,请告诉我。

ES的实际内存使用量是什么

我想知道文档大小后的内存消耗,但GET _nodes/stats的结果包含奇怪的内容

{
  "os": {
    "mem": {
      "total_in_bytes": 128922271744,
      "free_in_bytes": 2966560768,
      "used_in_bytes": 125955710976,
      "free_percent": 2,
      "used_percent": 98
    }
  }
}

我只是打开ES并且没有索引,但它显示了几乎正在使用的记忆。

非常感谢您阅读此内容。

0 个答案:

没有答案