# Envoi de données ElasticSearch

**URL:** <https://discuss.elastic.co/t/envoi-de-donnees-elasticsearch/116065>\
**Category:** Discussions en français\
**Created:** [January 18, 2018, 1:37pm UTC](https://discuss.elastic.co/t/envoi-de-donnees-elasticsearch/116065 "2018-01-18T13:37:33Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![mat.bst](https://avatars.discourse-cdn.com/v4/letter/m/9e8a1a/32.png) [@mat.bst](https://discuss.elastic.co/u/mat.bst)\
**Post date:** [January 18, 2018, 1:37pm UTC](https://discuss.elastic.co/t/envoi-de-donnees-elasticsearch/116065/1 "2018-01-18T13:37:33Z")

</div>

Bonjour à tous !

j'envoi mes donées dans elasticsearch depuis un programme écrit en java.

Ma méthode n'est peut être pas la plus optimisée mais en bref j'envoi une liste de 30 000 documents chaque jours. Chaque requête n'envoie qu'un seul document.

Question 1 : Existe-t-il une facon d'envoyer mes 30 000 docs en ouvrant qu'une seule connexion depuis Java.

Le problème que je rencontre actuellement c'est que sur les 30 000 doc envoyé seulement la moitié se retrouve dans Kibana (donc dans elasticsearch je présume). Or j'ai testé de bout en bout mon programme java, les 30 000 doc sont bien créer et 30 000 connexions vers elasticsearch sont bien établi.

Question 2 : Avez-vous une petite idée de pourquoi je ne recois que environ la moitié de mes docs ?

Mathieu

---

<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:** [January 18, 2018, 1:50pm UTC](https://discuss.elastic.co/t/envoi-de-donnees-elasticsearch/116065/2 "2018-01-18T13:50:16Z")

</div>

> Existe-t-il une facon d'envoyer mes 30 000 docs en ouvrant qu'une seule connexion depuis Java.

Oui. Enfin presque: [Bulk API | Java REST Client [7.17] | Elastic](https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/java-rest-high-document-bulk.html)

> Avez-vous une petite idée de pourquoi je ne recois que environ la moitié de mes docs ?

Non. Mais souvent ça vient de l'utilisation du même `_id` qui du coup remplace un doc existant.

---

<div class="post-metadata">

**Author:** ![mat.bst](https://avatars.discourse-cdn.com/v4/letter/m/9e8a1a/32.png) [@mat.bst](https://discuss.elastic.co/u/mat.bst)\
**Post date:** [January 18, 2018, 2:01pm UTC](https://discuss.elastic.co/t/envoi-de-donnees-elasticsearch/116065/3 "2018-01-18T14:01:32Z")

</div>

Aaaaaah

Du coup une solution est a envisager ou je suis cuit ?  
\_id est une variable qu'elasticsearch fixe sur chaque document de facon aléatoire ou c'est paramétrable en taille de facon a ce que je puisse regler mes soucis ?

---

<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:** [January 18, 2018, 2:21pm UTC](https://discuss.elastic.co/t/envoi-de-donnees-elasticsearch/116065/4 "2018-01-18T14:21:01Z")

</div>

Si c'est elasticsearch qui fixe l'`_id`, autrement dit, ce n'est pas toi qui le fournit, alors ce cas là ne peut pas arriver.

Donc peut-être devrais-tu partager ton code ici pour qu'on voit ce que tu fais exactement...

---

<div class="post-metadata">

**Author:** ![mat.bst](https://avatars.discourse-cdn.com/v4/letter/m/9e8a1a/32.png) [@mat.bst](https://discuss.elastic.co/u/mat.bst)\
**Post date:** [January 24, 2018, 10:04am UTC](https://discuss.elastic.co/t/envoi-de-donnees-elasticsearch/116065/5 "2018-01-24T10:04:26Z")

</div>

Réponse tardive de ma part,  
Je viens de me remettre sur ce problème pour le traiter, mon problème d'import n'était pas sur l'\_id qui remplacer des docs mais sur des caractères spéciaux qui ne passaient pas !

J'ai également utilisé bulk pour envoyer mes 30 000 docs avec une seule connexion à elasticsearch.  
Je poste quelques renseignements si cela peut aider quelqu'un à l'avenir !

Temps d'indexation de 30 000 docs JSON en créant une connexion par envoie -\> environ 7-8 minutes.  
Temps d'indexation de 30 000 docs JSON en créant une seule connexion -\> environ 4-5 SECONDES.

Voici comment j'ai utilisé bulk :

```
public static void executePost(Collection<Message> messages) {
    if (messages.isEmpty()) return;

    BulkRequest request = new BulkRequest();

    messages.stream().forEach(u -> {

      u.getRequests().forEach(r -> {

        request.add(new IndexRequest(u.getIndex(), u.getType()).source(r, XContentType.JSON));

      });

    });

    try (RestHighLevelClient client = new RestHighLevelClient(RestClient.builder(new HttpHost(HOSTNAME, PORT, PROTOCOL)))) {

      client.bulk(request);

    }
    catch (IOException e) {
      LOGGER.error("Unable to send data with bulk", e);
    }

  }

```

Mes objets _Message_ contiennent deux variables String contenant le nom de l'index et le nom du type ainsi qu'une collection de string contenant les différents documents JSON à indexer !

---

<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:** [January 24, 2018, 10:28am UTC](https://discuss.elastic.co/t/envoi-de-donnees-elasticsearch/116065/6 "2018-01-24T10:28:19Z")

</div>

Juste une remarque. Tu te retrouves du coup à envoyer un bulk de 30000 documents.

A l'avenir, ça pourrait être un bulk de 1000000 de documents éventuellement.  
Ca ne passera plus à un moment...

Le mieux est d'envoyer un bulk toutes les x opérations (x à déterminer mais dans mon cas d'usage, 10000 était une bonne valeur).

Pour simplifier tout ça, tu as le bulk processor en Java. Regarde [https://www.elastic.co/guide/en/elasticsearch/client/java-rest/6.1/java-rest-high-document-bulk.html#java-rest-high-document-bulk-processor](https://www.elastic.co/guide/en/elasticsearch/client/java-rest/6.1/java-rest-high-document-bulk.html#java-rest-high-document-bulk-processor)

---

<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:** [February 21, 2018, 10:28am UTC](https://discuss.elastic.co/t/envoi-de-donnees-elasticsearch/116065/7 "2018-02-21T10:28:22Z")

</div>

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