web-dev-qa-db-fra.com

FIELDDATA Les données sont trop volumineuses

J'ouvre Kibana et fais une recherche et j'obtiens l'erreur où les fragments ont échoué J'ai regardé dans le fichier elasticsearch.log et j'ai vu cette erreur:

org.elasticsearch.common.breaker.CircuitBreakingException: [FIELDDATA] Data too large, data for [@timestamp] would be larger than limit of [622775500/593.9mb]

Est-il possible d'augmenter cette limite de 593.9mb? 

12
lezzago

Vous pouvez essayer d’augmenter la limite de données de champ à 75% (60% par défaut) dans votre fichier de configuration elasticsearch.yml et de redémarrer votre cluster:

indices.breaker.fielddata.limit: 75%

Ou si vous préférez ne pas redémarrer votre cluster, vous pouvez modifier le paramètre de manière dynamique à l'aide de:

curl -XPUT localhost:9200/_cluster/settings -d '{
  "persistent" : {
    "indices.breaker.fielddata.limit" : "40%" 
  }
}'

Essaie.

17
Val

Je rencontre ce problème aussi ..____ Ensuite, je vérifie la mémoire de fielddata.

utiliser ci-dessous demande:

GET /_stats/fielddata?fields=*

l'affichage de sortie:

"logstash-2016.04.02": {
  "primaries": {
    "fielddata": {
      "memory_size_in_bytes": 53009116,
      "evictions": 0,
      "fields": {

      }
    }
  },
  "total": {
    "fielddata": {
      "memory_size_in_bytes": 53009116,
      "evictions": 0,
      "fields": {

      }
    }
  }
},
"logstash-2016.04.29": {
  "primaries": {
    "fielddata": {
      "memory_size_in_bytes":0,
      "evictions": 0,
      "fields": {

      }
    }
  },
  "total": {
    "fielddata": {
      "memory_size_in_bytes":0,
      "evictions": 0,
      "fields": {

      }
    }
  }
},

vous pouvez voir mes index nommer base datetime, et les expulsions sont toutes égales à 0. Addition, 2016.04.02 memory est 53009116, mais 2016.04.29 est égale à 0.

donc, je peux faire la conclusion, les anciennes données ont occuper toute la mémoire, de sorte que les nouvelles données ne peuvent pas les utiliser, et puis quand je fais une requête plus complexe, elle soulève la CircuitBreakingException

vous pouvez définir config/elasticsearch.yml

indices.fielddata.cache.size:  20%

il peut en effet expulser des données lorsque la limite de mémoire est atteinte.

mais peut être la vraie solution, vous devriez ajouter votre mémoire dans furture.et surveiller l'utilisation de la mémoire de données de champ est de bonnes habitudes.

plus en détail: https://www.elastic.co/guide/fr/elasticsearch/guide/current/_limiting_memory_usage.html

1
shangliuyan

J'ai rencontré ce problème l'autre jour. Outre la vérification de la mémoire de données de champ, je souhaiterais également vérifier la mémoire de la machine virtuelle et du système d'exploitation. Dans mon cas, l'administrateur a oublié de modifier l'ES_HEAP_SIZE et l'a laissé à 1gig. 

0
Glenak1911

Je pense qu'il est important de comprendre pourquoi cela se produit en premier lieu.

Dans mon cas, j'avais cette erreur parce que j'exécutais des agrégations sur des champs "analyzed". Au cas où vous auriez vraiment besoin que votre champ de chaîne soit analyzed, vous devriez envisager d'utiliser plusieurs champs et le rendre analyzed pour les recherches et not_analyzed pour les agrégations.

0
elachell