Sur mon cluster ELK de test, je rencontre l'erreur suivante lorsque j'essaie de voir les données de la semaine dernière.
Data too large, data for [@timestamp] would be larger than limit
L'avertissement concernant l'échec des fragments semble être trompeur car les outils de surveillance elasticsearch kopf
et head
montrent que tous les fragments fonctionnent correctement et que le cluster élastique est vert.
Un utilisateur du groupe google pour elasticsearch a suggéré d'augmenter la RAM. J'ai augmenté mes 3 nœuds à 8 Go chacun avec un tas de 4,7 Go, mais le problème persiste. Je génère environ 5 Go à 25 Go de données par jour, avec une rétention de 30 jours.
Vider le cache atténue les symptômes pour l'instant.
http://www.elastic.co/guide/en/elasticsearch/reference/current/indices-clearcache.html
Effacer un seul index
curl -XPOST 'http://localhost:9200/Twitter/_cache/clear'
Effacer plusieurs indices
curl -XPOST 'http://localhost:9200/kimchy,elasticsearch/_cache/clear'
curl -XPOST 'http://localhost:9200/_cache/clear'
Ou comme suggéré par un utilisateur dans IRC. Celui-ci semble fonctionner le mieux.
curl -XPOST 'http://localhost:9200/_cache/clear' -d '{ "fielddata": "true" }'
Mise à jour : ces erreurs ont disparu dès que le cluster a été déplacé vers un hyperviseur plus rapide
Le problème est la mémoire donnée à Elasticsearch par ES_Java_OPTS.
Essayez de donner plus de mémoire avec: ES_Java_OPTS = "- Xmx2g -Xms2g".
Vider le cache n'a pas fonctionné pour notre cluster. Lors de la vérification des différents nœuds à l'aide de http: //x.x.x.x: 9200/_cat/indices? V & s = index: desc l'un donnait l'erreur ci-dessus et les autres avaient des erreurs de pointeur invalides. J'ai redémarré le service élastique sur celui donnant l'erreur de limite de débit/données trop importante. Quand il est revenu en ligne, il y avait des fragments non attribués, que j'ai corrigés en supprimant le nombre de réplications à un nombre inférieur (il suffit de le faire sur l'un des nœuds pour modifier les paramètres d'index du cluster):
IFS=$'\n'
for line in $(curl -s 'elastic-search.example.com:9200/_cat/shards' | fgrep UNASSIGNED); do
INDEX=$(echo $line | (awk '{print $1}'))
echo start $INDEX
curl -XPUT "elastic-search.example.com:9200/$INDEX/_settings" -d '{
"index" : {
"number_of_replicas" : 1
}
}
'
done
# Check shard/cluster status (may take some time to rebalance):
# http://elastic-search.example.com:9200/_cat/shards?v&s=index:desc
# http://elastic-search.example.com:9200/_cluster/health?pretty
https://discuss.elastic.co/t/data-too-large/32141 semble mentionner que cela peut être un problème avec la taille du tas JVM.