# Lenteur lors de la récupération des données depuis Elasticsearch à partir de php

**URL:** <https://discuss.elastic.co/t/lenteur-lors-de-la-recuperation-des-donnees-depuis-elasticsearch-a-partir-de-php/39133>\
**Category:** Discussions en français\
**Created:** [January 13, 2016, 3:21pm UTC](https://discuss.elastic.co/t/lenteur-lors-de-la-recuperation-des-donnees-depuis-elasticsearch-a-partir-de-php/39133 "2016-01-13T15:21:53Z")\
**Posts on this page:** 11\
**Page:** 1

<div class="post-metadata">

**Author:** ![Nada\_Salhi](https://avatars.discourse-cdn.com/v4/letter/n/f14d63/32.png) [@Nada\_Salhi](https://discuss.elastic.co/u/Nada_Salhi)\
**Post date:** [January 13, 2016, 3:21pm UTC](https://discuss.elastic.co/t/lenteur-lors-de-la-recuperation-des-donnees-depuis-elasticsearch-a-partir-de-php/39133/1 "2016-01-13T15:21:53Z")

</div>

Nous avons des lenteurs au niveau de notre système qui communique avec elasticsearch,nous avons comme client le PHP ,on nous a proposé un Mapping où on devaient mettre les champs sur lesquels nous effectuons la recherche comme Not Analyzed ,c'est en effet ce que nous avons fait ,mais cela ne résolue pas le problème ,parce que ce qu'on nous a proposé comme solution est utile dans le cas où nous effectuons toutes les recherches possible ,comme ça ils seront stockés dans le cache et bien évidemment la recherche sera plus fluide ,chose qui n'est pas possible dans notre cas .  
Voici le mapping qu'on a effectué :  
PUT proveille  
{  
"mappings": {  
"tweecoms": {  
"properties" : {  
"association\_key":{ "type" : "long" },  
"id\_tweecom":{ "type" : "string"},  
"text" : { "type" : "string", "index" : "not\_analyzed" },  
"photo":{"type" : "string"},  
"lien":{"type" : "string"},  
"date":{"type" : "string"},  
"source":{"type" : "string"},  
"nb\_retweets":{"type": "string"},  
"nb\_favorite":{"type": "string"},  
"nb\_followers":{"type": "string"},  
"hashtag": { "type" : "string", "index" : "not\_analyzed" },  
"origine":{"type": "string"},  
"acceleration":{"type": "string"},  
"influence":{"type": "string"},  
"sentiment":{"type": "string"},  
"screen\_name":{"type": "string", "index" : "not\_analyzed"},  
"name":{"type": "string", "index" : "not\_analyzed"},  
"photo\_user":{"type": "string"},  
"sexe":{"type": "string"},  
"location":{"type": "string", "index" : "not\_analyzed"},  
"timezone":{"type": "string"},  
"nb\_followings":{"type": "string"},  
"nb\_posts":{"type": "string"},  
"nb\_followers\_user":{"type": "string"},  
"origine\_user":{"type": "string"},  
"id\_user\_tweecoms":{"type": "string"},  
"protected":{"type": "string"},  
"message":{"type": "string", "index" : "not\_analyzed"},  
"lien\_post":{"type": "string"},  
"nom\_page":{"type": "string"},  
"age":{"type": "string","index" : "not\_analyzed"}  
}  
}  
}  
}

les requêtes que nous effectuons ,sont des requêtes simple ;par exemple :  
select \* from tweecoms where text like '%the words to find %'  
Mais le nombre de données qu'on a est important  
je tiens à vous signaler que si nous effectuons la recherche sur le moteur de recherche d'Elasticsearch directement ,cela ne prend que quelques secondes mais c'est quand nous envoyons la requête depuis le client PHP que c'est lent .  
Voici le code PHP qui envoi la requête :  
public function rechercheville($ville) {  
echo 'date debut elasticsearch ' . date('d-m-Y H:i:s') . '  
';  
$search\_host = 'x.x.x.x';  
$search\_port = 'y';  
$index = 'myindex3';  
$doc\_type = 'tweecoms3';  
$query = '\_search';  
ini\_set('memory\_limit', '5500000M');  
set\_time\_limit(10000);  
$total=0;  
$from=0;  
$dd = array();  
$i=0;  
do  
{  
$json\_doc = '{  
"query":{  
"match":{"location":"_'.$ville.'_"}  
},  
"size": 20000,  
"from": '.$from.',  
"fields": [  
"association\_key","id\_tweecom","text","photo","lien","date","source","nb\_retweets","nb\_favorite","nb\_followers","hashtag","origine","acceleration","influence","sentiment","screen\_name","name","photo\_user","sexe","location","timezone", "nb\_followings","nb\_posts","nb\_followers\_user","origine\_user", "id\_user\_tweecoms","protected", "lien\_post","nom\_page"  
]  
}';  
$from=$from+20000;  
//$json\_doc = json\_encode($json\_doc);  
$baseUri = 'http://' . $search\_host . ':' . $search\_port . '/' . $index . '/' . $doc\_type . '/' . $query;  
$ci = curl\_init();  
curl\_setopt($ci, CURLOPT\_URL, $baseUri);  
curl\_setopt($ci, CURLOPT\_PORT, $search\_port);  
curl\_setopt($ci, CURLOPT\_TIMEOUT, 200000000);  
curl\_setopt($ci, CURLOPT\_RETURNTRANSFER, 1);  
curl\_setopt($ci, CURLOPT\_FORBID\_REUSE, 0);  
curl\_setopt($ci, CURLOPT\_CUSTOMREQUEST, 'GET');  
curl\_setopt($ci, CURLOPT\_POSTFIELDS, $json\_doc);  
$response = curl\_exec($ci);  
curl\_close($ci);  
$infos = json\_decode($response, true);  
$total=$infos['hits']['total'];  
echo "$from\<$total  
";  
d'autre part,nous avons essayé de diviser les données en 3 cluster et aussi ça ne change absolument rien .  
Est ce que vous pouvez nous proposer d'autres solutions

On n'a essayé tous les moyens possibles mais sans résultat et nous sommes vraiment bloqué merci de nous aider

---

<div class="post-metadata">

**Author:** ![colings86](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/colings86/32/44960_2.png) [@colings86](https://discuss.elastic.co/u/colings86)\
**Post date:** [January 13, 2016, 3:34pm UTC](https://discuss.elastic.co/t/lenteur-lors-de-la-recuperation-des-donnees-depuis-elasticsearch-a-partir-de-php/39133/2 "2016-01-13T15:34:58Z")

</div>

You may get more help if you post topics which are in French in the French sub-catgory of the 'Elastic in you Native Tongue' Category: [https://discuss.elastic.co/c/in-your-native-tongue/discussions-en-francais](https://discuss.elastic.co/c/in-your-native-tongue/discussions-en-francais)

If you wish I can move this topic to that category?

---

<div class="post-metadata">

**Author:** ![Nada\_Salhi](https://avatars.discourse-cdn.com/v4/letter/n/f14d63/32.png) [@Nada\_Salhi](https://discuss.elastic.co/u/Nada_Salhi)\
**Post date:** [January 14, 2016, 3:10pm UTC](https://discuss.elastic.co/t/lenteur-lors-de-la-recuperation-des-donnees-depuis-elasticsearch-a-partir-de-php/39133/3 "2016-01-14T15:10:40Z")

</div>

yes please if it's possible,and thank youuuu

---

<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 15, 2016, 8:54pm UTC](https://discuss.elastic.co/t/lenteur-lors-de-la-recuperation-des-donnees-depuis-elasticsearch-a-partir-de-php/39133/4 "2016-01-15T20:54:07Z")

</div>

Essaye de passer size à 10 pour voir.

---

<div class="post-metadata">

**Author:** ![Nada\_Salhi](https://avatars.discourse-cdn.com/v4/letter/n/f14d63/32.png) [@Nada\_Salhi](https://discuss.elastic.co/u/Nada_Salhi)\
**Post date:** [January 21, 2016, 3:41pm UTC](https://discuss.elastic.co/t/lenteur-lors-de-la-recuperation-des-donnees-depuis-elasticsearch-a-partir-de-php/39133/5 "2016-01-21T15:41:02Z")

</div>

ça ne m'intéresse pas de réduire la taille ,parce que je ne suis pas entrain de faire des testes ,c'est un système qui gère un nombre énorme de données et ce qui m'intéresse ce qu'il n y est pas de lenteur même en chargeant toutes les données

---

<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 21, 2016, 3:53pm UTC](https://discuss.elastic.co/t/lenteur-lors-de-la-recuperation-des-donnees-depuis-elasticsearch-a-partir-de-php/39133/6 "2016-01-21T15:53:17Z")

</div>

Tant pis...

Le résultat du test m'aurait permis de t'aider et de d'orienter sur une piste ou une autre.

---

<div class="post-metadata">

**Author:** ![Nada\_Salhi](https://avatars.discourse-cdn.com/v4/letter/n/f14d63/32.png) [@Nada\_Salhi](https://discuss.elastic.co/u/Nada_Salhi)\
**Post date:** [January 21, 2016, 4:19pm UTC](https://discuss.elastic.co/t/lenteur-lors-de-la-recuperation-des-donnees-depuis-elasticsearch-a-partir-de-php/39133/7 "2016-01-21T16:19:46Z")

</div>

yes please post it please in the section french ,and thank you so much

Le 13 janvier 2016 à 15:45, Colin Goodheart-Smithe \<  
[noreply@discuss.elastic.co](mailto:noreply@discuss.elastic.co)\> a écrit :

---

<div class="post-metadata">

**Author:** ![Nada\_Salhi](https://avatars.discourse-cdn.com/v4/letter/n/f14d63/32.png) [@Nada\_Salhi](https://discuss.elastic.co/u/Nada_Salhi)\
**Post date:** [January 21, 2016, 5:10pm UTC](https://discuss.elastic.co/t/lenteur-lors-de-la-recuperation-des-donnees-depuis-elasticsearch-a-partir-de-php/39133/8 "2016-01-21T17:10:49Z")

</div>

D'accord ,dis moi qu'est ce que tu veux savoir par apport à la récupération de 10 enregistrements ,si tu veux savoir si c'est lent ,c'est pas lent lorsqu'il s'agit de peu d'enregistrements ;c'est même rapide ,et si t'as besoin d'autres informations par apport au test des 10 enregistrements ,dis moi quelles sont les informations qu'il te faut pour que tu puisses m'aider  
Mercii

---

<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 21, 2016, 5:56pm UTC](https://discuss.elastic.co/t/lenteur-lors-de-la-recuperation-des-donnees-depuis-elasticsearch-a-partir-de-php/39133/9 "2016-01-21T17:56:01Z")

</div>

Si tu as besoin d'extraire beaucoup de documents, il faut utiliser scan and scroll API.

Pas sûr que ce soit plus rapide cependant mais en tout cas c'est plus efficace (usage RAM notamment).

---

<div class="post-metadata">

**Author:** ![Nada\_Salhi](https://avatars.discourse-cdn.com/v4/letter/n/f14d63/32.png) [@Nada\_Salhi](https://discuss.elastic.co/u/Nada_Salhi)\
**Post date:** [February 2, 2016, 5:37pm UTC](https://discuss.elastic.co/t/lenteur-lors-de-la-recuperation-des-donnees-depuis-elasticsearch-a-partir-de-php/39133/10 "2016-02-02T17:37:50Z")

</div>

j'ai utilisé scan and scroll  
voici le script :  
$search\_host = '94.23.20.200';  
$search\_port = '9200';  
$index = 'proveille';  
$doc\_type = 'tweecoms';  
$query = '\_search?search\_type=scan&scroll=1m';  
ini\_set('memory\_limit', '5500000M');  
set\_time\_limit(1000000);  
$dd = array();  
$i = 0;  
$total=0;  
$from=0;  
do  
{  
$json\_doc = '{  
"query": {  
"query\_string": {  
"query": "_' . $sujet . '_",  
"lenient": true  
}  
},  
"size":10000 ,  
"from": '.$from.',  
"fields": [  
"association\_key","id\_tweecom","text","photo","lien","date","source","nb\_retweets","nb\_favorite","nb\_followers","hashtag","origine","acceleration","influence","sentiment","screen\_name","name","photo\_user","sexe","location","timezone", "nb\_followings","nb\_posts","nb\_followers\_user","origine\_user", "id\_user\_tweecoms","protected", "lien\_post","nom\_page","age"  
]  
}';  
$from=$from+10000;  
//$json\_doc = json\_encode($json\_doc);  
$baseUri = 'http://' . $search\_host . ':' . $search\_port . '/' . $index . '/' . $doc\_type . '/' . $query;  
$ci = curl\_init();  
curl\_setopt($ci, CURLOPT\_URL, $baseUri);  
curl\_setopt($ci, CURLOPT\_PORT, $search\_port);  
curl\_setopt($ci, CURLOPT\_TIMEOUT, 200000000);  
curl\_setopt($ci, CURLOPT\_RETURNTRANSFER, 1);  
curl\_setopt($ci, CURLOPT\_FORBID\_REUSE, 0);  
curl\_setopt($ci, CURLOPT\_CUSTOMREQUEST, 'GET');  
curl\_setopt($ci, CURLOPT\_POSTFIELDS, $json\_doc);  
$response = curl\_exec($ci);  
curl\_close($ci);  
$infos = json\_decode($response, true);  
ça me rend un scroll id ,j'essaie de récupérer ce qu'il y a dans le scroll id avec ça :  
GET /\_search/scroll  
{  
"scroll" : "1m",  
"scroll\_id" : "c2Nhbjs2OzM0NDg1ODpzRlBLc0FXNlNyNm5JWUc1"  
}  
et ça ne me retourne pas les enregistrements  
voici l'erreur que j'ai :  
GET 'localhost:9200/\_search/scroll' -d'  
{  
"scroll" : "1m",  
"scroll\_id" : "c2Nhbjs2OzM0NDg1ODpzRlBLc0FXNlNyNm5JWUc1"  
}  
'  
et voici le résultat retourné par la requête scan and scroll:  
array(  
'\_scroll\_id' =\> 'c2Nhbjs1OzE0MjU6eXRfQ2MyR3VTT1NGbVpBM21WTmkyZzsxNDI2Onl0X0NjMkd1U09TRm1aQTNtVk5pMmc7NTE6Njl1ZXU5dU5STE8ycjlMS0Zfckl1UTs1Mjo2OXVldTl1TlJMTzJyOUxLRl9ySXVROzE0MjQ6eXRfQ2MyR3VTT1NGbVpBM21WTmkyZzsxO3RvdGFsX2hpdHM6NTQwMzs=',  
'took' =\> (int) 8810,  
'timed\_out' =\> false,  
'\_shards' =\> array(  
'total' =\> (int) 5,  
'successful' =\> (int) 5,  
'failed' =\> (int) 0  
),  
'hits' =\> array(  
'total' =\> (int) 5403,  
'max\_score' =\> (float) 0,  
'hits' =\> array()  
)  
)

---

<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:** [July 6, 2017, 1:49pm UTC](https://discuss.elastic.co/t/lenteur-lors-de-la-recuperation-des-donnees-depuis-elasticsearch-a-partir-de-php/39133/11 "2017-07-06T13:49:39Z")

</div>


