elasticsearch Elasticsearch fielddata的内存使用,elasticsearch,autocomplete,elasticsearch,Autocomplete" /> elasticsearch Elasticsearch fielddata的内存使用,elasticsearch,autocomplete,elasticsearch,Autocomplete" />

elasticsearch Elasticsearch fielddata的内存使用

elasticsearch Elasticsearch fielddata的内存使用,elasticsearch,autocomplete,elasticsearch,Autocomplete,在本文之后,我使用ElasticSearch创建了一个简单的自动完成 下面是一个简单的例子。 起初,我没有将“fielddata”:true设置为autocomplete属性。 然后,ES返回了一个错误 { "error": { "root_cause": [ { "type": "illegal_argument_exception", "reason": "Fielddata is disabled on text fields by

在本文之后,我使用ElasticSearch创建了一个简单的自动完成

下面是一个简单的例子。

起初,我没有将
“fielddata”:true设置为autocomplete属性。
然后,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."
      }
}
因此,我在autocomplete的属性中添加了
“fielddata”:true
,效果很好

但文档增加后,
[fielddata]数据太大,[autocomplete]的数据将超过[249416908/237.8mb]的限制。
发生错误

以下是我的问题

这是实现“自动完成”的正确方法吗?

我认为这是搜索引擎的一个常见功能,但在ES中没有建议。我说得对吗

此功能是否需要“fielddata”?

我认为即使它不是功能所必需的,我也需要它在短时间内做出响应

如何减少字段数据大小?还是增加fielddata限制大小?

我将尝试减小
最大瓦大小
。如果还有什么好办法,请告诉我

ES的实际内存使用情况是什么

我想根据文档大小计算内存消耗,但是
GET\u nodes/stats
的结果包含一些奇怪的东西

{
  "os": {
    "mem": {
      "total_in_bytes": 128922271744,
      "free_in_bytes": 2966560768,
      "used_in_bytes": 125955710976,
      "free_percent": 2,
      "used_percent": 98
    }
  }
}
我只是打开ES,没有索引,但它显示几乎所有的记忆都在使用中

非常感谢您阅读本文