# Je rencontre un problème : Limit of total fields \[1000\] in index \[index\] has been exceeded

**URL:** <https://discuss.elastic.co/t/je-rencontre-un-probleme-limit-of-total-fields-1000-in-index-index-has-been-exceeded/110633>\
**Category:** Discussions en français\
**Created:** [December 7, 2017, 8:46am UTC](https://discuss.elastic.co/t/je-rencontre-un-probleme-limit-of-total-fields-1000-in-index-index-has-been-exceeded/110633 "2017-12-07T08:46:51Z")\
**Posts on this page:** 19\
**Page:** 1

<div class="post-metadata">

**Author:** ![Rym\_Guerbi\_Michaut](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/rym_guerbi_michaut/32/25496_2.png) [@Rym\_Guerbi\_Michaut](https://discuss.elastic.co/u/Rym_Guerbi_Michaut)\
**Post date:** [December 7, 2017, 8:46am UTC](https://discuss.elastic.co/t/je-rencontre-un-probleme-limit-of-total-fields-1000-in-index-index-has-been-exceeded/110633/1 "2017-12-07T08:46:51Z")

</div>

Bonjour,

Utilisatrice novice des outils ELK, je rencontre un souci d'import de données en JSON.

J’utilise Logstash avec le plugin HTTP Poller en input et Elasticsearch en output.

J'ai créé mon fichier de config pour ce faire.

Je cherche à importer des données en JSON mais j’ai une erreur qui apparaît à chaque tentative:  
« Limit of total fields [1000] in index [index] has been exceeded »

J'ai essayé d'ajouter une condition dans le fichier yml de Logstash en augmantant la limite à 2000 mais ça n'a rien donné.

En cherchant sur le net, j’ai compris qu’il fallait que je modifie le template d’Elasticsearch de sorte à ce que mes données soient listées en lignes et non pas en colonnes.

Pourriez-vous m’aider/m’orienter vers une solution de construction de template dans ce sens s’il vous plait?

En vous remerciant par avance.

Cordialement,

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [December 7, 2017, 9:18am UTC](https://discuss.elastic.co/t/je-rencontre-un-probleme-limit-of-total-fields-1000-in-index-index-has-been-exceeded/110633/2 "2017-12-07T09:18:39Z")

</div>

Tu dois modifier les settings de ton index. Voici: [https://www.elastic.co/guide/en/elasticsearch/reference/6.0/mapping.html#mapping-limit-settings](https://www.elastic.co/guide/en/elasticsearch/reference/6.0/mapping.html#mapping-limit-settings)

---

<div class="post-metadata">

**Author:** ![Rym\_Guerbi\_Michaut](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/rym_guerbi_michaut/32/25496_2.png) [@Rym\_Guerbi\_Michaut](https://discuss.elastic.co/u/Rym_Guerbi_Michaut)\
**Post date:** [December 7, 2017, 9:58am UTC](https://discuss.elastic.co/t/je-rencontre-un-probleme-limit-of-total-fields-1000-in-index-index-has-been-exceeded/110633/3 "2017-12-07T09:58:41Z")

</div>

Merci pour ta réactivité @dadoonet

Et je le fais dans les paramètres de output du fichier de config Logstash, non? Parce que sinon ça n'importerait même pas les données?!

Si j'ai bien compris, c'est juste le "mapping type" que je dois modifier, en settant le meta-field "\_type" en lui assignant "object" puisque c'est un document JSON. Si c'est bien ça, je voudrais confirmer que je le mets bien dans la partie output :

output {  
elasticsearch {  
host =\> ["localhost:9200"]  
protocol =\> "http"  
index =\> "json\_10meilleurs\_logs"  
user =\> "elastic"  
password =\> "changeme"  
}

et je voudrais aussi savoir est-ce qu'il y a une synthaxe particulière?

Par ailleurs, est-ce que je ne peux pas faire ça avec ces paramètres? :

> **[New in Logstash 1.3: Elasticsearch Index Template Management
	  	 | Elastic](https://www.elastic.co/blog/new-in-logstash-1-3-elasticsearch-index-template-management)**
>
> For a long time in the Logstash community we’ve been advising users to apply an index mapping template. There are a number of compelling reasons to do this, including: Elasticsearch tuning (

  
en settant les paramètres comme suit:

- manage\_template =\> false #pour qu'il ne mette pas le template par défaut
- template\_name =\> “by\_row” #puisque je veux que mes données aient le même format en sortie qu'en entrée (par ligne)
- template\_overwrite =\> true #pour que le précédent template soit écrasé lors de cet import

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [December 7, 2017, 10:14am UTC](https://discuss.elastic.co/t/je-rencontre-un-probleme-limit-of-total-fields-1000-in-index-index-has-been-exceeded/110633/4 "2017-12-07T10:14:06Z")

</div>

Plus simplement tu peux créer ton index ainsi (depuis la Dev console Kibana, sinon avec curl):

```
DELETE test
PUT test
{
  "settings":{
    "index.mapping.total_fields.limit": 2000
  }
}
```

---

<div class="post-metadata">

**Author:** ![Rym\_Guerbi\_Michaut](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/rym_guerbi_michaut/32/25496_2.png) [@Rym\_Guerbi\_Michaut](https://discuss.elastic.co/u/Rym_Guerbi_Michaut)\
**Post date:** [December 7, 2017, 10:18am UTC](https://discuss.elastic.co/t/je-rencontre-un-probleme-limit-of-total-fields-1000-in-index-index-has-been-exceeded/110633/5 "2017-12-07T10:18:19Z")

</div>

Admettons que j'utilise Kibana pour le faire.  
Comment fait-on pour modifier les paramètres d'un index qui n'a pas encore été créé sur Elasticsearch puisque l'erreur s'affiche sur Logstash lors de la tentative d'import?

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [December 7, 2017, 10:32am UTC](https://discuss.elastic.co/t/je-rencontre-un-probleme-limit-of-total-fields-1000-in-index-index-has-been-exceeded/110633/6 "2017-12-07T10:32:31Z")

</div>

Exactement comme je viens de le montrer.

Tu copies/colles ma réponse dans Kibana et tu exécute les deux commandes.

La 1ère ca effacer l’index si il existe  
La 2eme, le créer

---

<div class="post-metadata">

**Author:** ![Rym\_Guerbi\_Michaut](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/rym_guerbi_michaut/32/25496_2.png) [@Rym\_Guerbi\_Michaut](https://discuss.elastic.co/u/Rym_Guerbi_Michaut)\
**Post date:** [December 7, 2017, 10:40am UTC](https://discuss.elastic.co/t/je-rencontre-un-probleme-limit-of-total-fields-1000-in-index-index-has-been-exceeded/110633/7 "2017-12-07T10:40:54Z")

</div>

Ca renvoie une erreur. Et pour cause, test n'existe pas encore.

 ![Console - Kibana](https://us1.discourse-cdn.com/elastic/original/3X/a/6/a628bdf0f50997575e7cdf3fd9efab89693294f4.png)

J'ai supprimé l'ancien index qui contenait 0 document pour tenter de le créer à nouveau et depuis, je n'arrive plus à créer d'index, j'ai une erreur qui s'affiche:  
"Cannot create pipeline {:reason=\>"Something is wrong with your configuration."}  
alors que le fichier de configuration n'a pas changé -\_-

---

<div class="post-metadata">

**Author:** ![Rym\_Guerbi\_Michaut](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/rym_guerbi_michaut/32/25496_2.png) [@Rym\_Guerbi\_Michaut](https://discuss.elastic.co/u/Rym_Guerbi_Michaut)\
**Post date:** [December 7, 2017, 10:50am UTC](https://discuss.elastic.co/t/je-rencontre-un-probleme-limit-of-total-fields-1000-in-index-index-has-been-exceeded/110633/8 "2017-12-07T10:50:50Z")

</div>

le fichier de configuration logstash:  
input {  
http\_poller {  
urls =\> {  
test =\> {  
method =\> get  
user =\> "me"  
password =\> "mypassword"  
url =\> "myurl"  
headers =\> {  
Accept =\> "application/json"  
}  
}  
}  
request\_timeout =\> 120  
schedule =\> { cron =\> "\*/02 \* \* \* \* UTC"}  
codec =\> "json"  
metadata\_target =\> "http\_poller\_metadata"  
}  
}

output {  
elasticsearch {  
hosts =\> ["localhost:9200"]  
protocol =\> "http"  
index =\> "json\_10meilleurs\_logs"  
user =\> "elastic"  
password =\> "changeme"  
}  
}

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [December 7, 2017, 11:08am UTC](https://discuss.elastic.co/t/je-rencontre-un-probleme-limit-of-total-fields-1000-in-index-index-has-been-exceeded/110633/9 "2017-12-07T11:08:33Z")

</div>

J’ai modifié mon exemple. Les guillemets sont bizarres sur iPhone parfois.

Oui si l’index n’existe pas, la première exécution donne une erreur. Normal.  
Ca n’empêche pas d’exécuter la 2eme commande.

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [December 7, 2017, 11:09am UTC](https://discuss.elastic.co/t/je-rencontre-un-probleme-limit-of-total-fields-1000-in-index-index-has-been-exceeded/110633/10 "2017-12-07T11:09:29Z")

</div>

À noter qu’il faut remplacer test par le nom de ton index. "json\_10meilleurs\_logs"

---

<div class="post-metadata">

**Author:** ![Rym\_Guerbi\_Michaut](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/rym_guerbi_michaut/32/25496_2.png) [@Rym\_Guerbi\_Michaut](https://discuss.elastic.co/u/Rym_Guerbi_Michaut)\
**Post date:** [December 7, 2017, 1:03pm UTC](https://discuss.elastic.co/t/je-rencontre-un-probleme-limit-of-total-fields-1000-in-index-index-has-been-exceeded/110633/11 "2017-12-07T13:03:13Z")

</div>

> [@dadoonet](#):
>
> PUT json\_10meilleurs\_logs  
> {  
> "settings":{  
> "index.mapping.total\_fields.limit": 2000  
> }  
> }

Ca marche mieux 🙂L'index a été créé.  
Il ne reste plus qu'à le remplir 🙂  
J'espère y arriver sans avoir à revenir vers toi -\_-

Merci encore pour ton aide

---

<div class="post-metadata">

**Author:** ![Rym\_Guerbi\_Michaut](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/rym_guerbi_michaut/32/25496_2.png) [@Rym\_Guerbi\_Michaut](https://discuss.elastic.co/u/Rym_Guerbi_Michaut)\
**Post date:** [December 12, 2017, 9:35am UTC](https://discuss.elastic.co/t/je-rencontre-un-probleme-limit-of-total-fields-1000-in-index-index-has-been-exceeded/110633/12 "2017-12-12T09:35:12Z")

</div>

@dadoonet je dois malheureusement revenir vers toi pour le remplissage de mon index.

Ca a marché une fois, mais ça ne veut plus ☹

mon fichier de configuration :

```auto
input {
 http_poller {
    urls => {
        test => {
        method => get
        user => "moi"
        password => "mdp"
        url => "monurl"
        headers => {
        Accept => "application/json"
        }
     }
    }
    request_timeout => 120
    schedule => { cron => "*/03 * * * * UTC"}
    codec => "json"
    metadata_target => "http_poller_metadata"
  }
}

output {
  	elasticsearch {
	hosts => ["localhost:9200"] 
	index => "json_10meilleurs_logs"
	user => "elastic"
	password => "changeme"
	}
}

```

et sur Kibana, à l'affichage de l'index j'ai ça:

```auto
{
  "took": 2,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": 1,
    "max_score": 1,
    "hits": [
      {
        "_index": "json_10meilleurs_logs",
        "_type": "logs",
        "_id": "AWBKBGYk-gt4iIR0On40",
        "_score": 1,
        "_source": {
          "http_request_failure": {
            "name": "test",
            "request": {
              "headers": {
                "Accept": "application/json"
              },
              "method": "get",
              "auth": {
                "eager": true,
                "user" => "moi"
                "password" => "mdp"
                "url" => "monurl"
            },
            "error": "Read timed out",
            "backtrace": null,
            "runtime_seconds": 10.289
          },
          "@timestamp": "2017-12-12T09:18:10.416Z",
          "@version": "1",
          "http_poller_metadata": {
            "name": "test",
            "host": "kda-CTBR3G2",
            "request": {
              "headers": {
                "Accept": "application/json"
              },
              "method": "get",
              "auth": {
                "eager": true,
                 "user" => "moi"
                 "password" => "mdp"
                  "url" => "monurl"
            },
            "runtime_seconds": null
          },
          "tags": [
            "_http_request_failure"
          ]
        }
      }
    ]
  }
}

```

J'ai un "\_http\_request\_failure" pour les champs: \_source et tags  
Et je n'arrive pas à voir ce qui ne va pas.... Pourrais-tu m'aider s'il te plait?

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [December 12, 2017, 5:08pm UTC](https://discuss.elastic.co/t/je-rencontre-un-probleme-limit-of-total-fields-1000-in-index-index-has-been-exceeded/110633/13 "2017-12-12T17:08:29Z")

</div>

Le mieux est d'ouvrir une autre discussion.  
Pas la peine non plus de "ping-er" les participants au forum. Chacun est libre de répondre ou non aux questions.

Le pb est amusant.  
Je ne sais pas ce qui se passe mais tu devrais changer

```auto
output { 
  elasticsearch {
    // ...
  }
}

```

par

```auto
output { 
  stdout { codec => rubydebug }
}

```

Et voir ce que ça sort.

---

<div class="post-metadata">

**Author:** ![Rym\_Guerbi\_Michaut](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/rym_guerbi_michaut/32/25496_2.png) [@Rym\_Guerbi\_Michaut](https://discuss.elastic.co/u/Rym_Guerbi_Michaut)\
**Post date:** [December 13, 2017, 10:20am UTC](https://discuss.elastic.co/t/je-rencontre-un-probleme-limit-of-total-fields-1000-in-index-index-has-been-exceeded/110633/14 "2017-12-13T10:20:24Z")

</div>

Merci pour tes réponses. Désolée pour le dérangement.

Je vais ouvrir un autre sujet.

---

<div class="post-metadata">

**Author:** ![Damien\_Alexandre](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/damien_alexandre/32/21566_2.png) [@Damien\_Alexandre](https://discuss.elastic.co/u/Damien_Alexandre)\
**Post date:** [December 13, 2017, 11:08am UTC](https://discuss.elastic.co/t/je-rencontre-un-probleme-limit-of-total-fields-1000-in-index-index-has-been-exceeded/110633/15 "2017-12-13T11:08:16Z")

</div>

> [@Rym\_Guerbi\_Michaut](#):
>
> Limit of total fields [1000] in index [index] has been exceeded

Plutôt que de lever la limite, j'aurais plutôt regardé côté document. Tu as peut être des valeurs dans les clés du JSON, ou un JSON mal formaté en sortie de Logstash. L'erreur veut quand même dire que ton JSON a plus de 1000 clé différentes, c'est pas rien ! 😄

Concernant http\_request\_failure je pense que c'est un tout autre problème.

---

<div class="post-metadata">

**Author:** ![Rym\_Guerbi\_Michaut](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/rym_guerbi_michaut/32/25496_2.png) [@Rym\_Guerbi\_Michaut](https://discuss.elastic.co/u/Rym_Guerbi_Michaut)\
**Post date:** [December 13, 2017, 12:49pm UTC](https://discuss.elastic.co/t/je-rencontre-un-probleme-limit-of-total-fields-1000-in-index-index-has-been-exceeded/110633/16 "2017-12-13T12:49:18Z")

</div>

Justement, tout le problème est là @Damien_Alexandre. Et du coup, j'ai essayé de le formater en utilisant split + mutate - convert mais ça ne marche pas non plus. Au début au moins j'avais une sortie avec toutes mes valeurs. Maintenant, il n'y a plus rien qui passe, avec ou sans filtres...

Je ne vois vraiment pas ce qui pourrait être le problème.

Je ne maîtrise pas trop les documents en JSON, comment faire pour reconnaître les clefs justement?

---

<div class="post-metadata">

**Author:** ![Damien\_Alexandre](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/damien_alexandre/32/21566_2.png) [@Damien\_Alexandre](https://discuss.elastic.co/u/Damien_Alexandre)\
**Post date:** [December 13, 2017, 12:58pm UTC](https://discuss.elastic.co/t/je-rencontre-un-probleme-limit-of-total-fields-1000-in-index-index-has-been-exceeded/110633/17 "2017-12-13T12:58:07Z")

</div>

Tu peux suivre la recommendation de dadoonet et remplacer ton output par celui ci:

> [@dadoonet](#):
>
> output {  
> stdout { codec =\> rubydebug }  
> }

Ensuite quand tu lancera Logstash, tu verra dans ta console les documents en sortie de pipeline, et c'est la que tu pourra ce qui cloche dans le document.  
La correction dépendra du problème. N'hésite pas à partager ici un exemple d'output.

---

<div class="post-metadata">

**Author:** ![Rym\_Guerbi\_Michaut](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/rym_guerbi_michaut/32/25496_2.png) [@Rym\_Guerbi\_Michaut](https://discuss.elastic.co/u/Rym_Guerbi_Michaut)\
**Post date:** [January 3, 2018, 8:37am UTC](https://discuss.elastic.co/t/je-rencontre-un-probleme-limit-of-total-fields-1000-in-index-index-has-been-exceeded/110633/19 "2018-01-03T08:37:58Z")

</div>

Hello,

Un petit message juste pour dire que ça fonctionne à nouveau et je ne sais pas comment ça se fait.  
Mais ça marche 😊

Cependant, toujours le même problème de format de sortie du document: un seul document JSON au format objet malgré tous les filtres apposés. Mais je pense que j'ouvrirai un autre thread pour ça.

Merci pour votre aide.

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [January 31, 2018, 8:38am UTC](https://discuss.elastic.co/t/je-rencontre-un-probleme-limit-of-total-fields-1000-in-index-index-has-been-exceeded/110633/20 "2018-01-31T08:38:04Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
