编程知识 cdmana.com

Elastic Search Aggregate Learning five: Problem Analysis of Uncertainty of sequencing results, Alibaba Java Performance Tuning Practical

PUT /testcase

{

“settings”: {

“number_of_replicas”: 1,

“number_of_shards”: 2

},

“mappings” : {

“t1” : {

“properties” : {

“name” : {

“type” : “keyword”

},

“value” : {

“type” : “long”

}

}

}

}

}

Ensuite, il y a l'importation de données.

 Deuxième étape de la question de la récurrence:Importer des données

Pour l'exactitude des tests,Fabriquer les données d'essai comme suit::

  1. SelonnameAgrégation des champs,nameNe devrait pas avoir trop de valeur,Sinon, il y aura trop de seaux et de mauvais résultats d'analyse.;

  2. Peut spécifier avec précision quelles données doivent être divisées1,Qui va au fractionnement2;

Pour ces données d'essai,Voici d'abord les résultats de l'agrégation(Calculé lors de la production des données),Avec ces résultats,,Et nous pouvonsesComparer les résultats de l'agrégation,Trouver le problème:

Tranche I,Appuyez.nameAprès agrégation,nameMême documentvalueSomme des champs:

14 : 22491 //14- Oui.name,22491C'est tout.nameégal à14Du documentvalueSomme des champs

8 : 21632

4 : 21502

15 : 21234

26 : 20731

10 : 20306

《Grandes usines de première ligneJavaAnalyse des questions d'entrevue+Notes d'apprentissage pour le développement de l'arrière - plan+La dernière vidéo d'architecture+Document d'information sur le code source du projet en direct》

【docs.qq.com/doc/DSmxTbFJ1cmN1R2dB】 Partage open source du contenu complet

17 : 19942

9 : 19418

25 : 19191

16 : 18797

6 : 18306

3 : 18166

22 : 17669

24 : 16971

27 : 16911

18 : 16758

23 : 16527

13 : 15705

7 : 15251

11 : 15019

12 : 14387

2 : 14329

30 : 14023

5 : 13421

29 : 13309

1 : 12574

28 : 12189

19 : 11673

21 : 11460

20 : 10576

Tranche 2 ,Appuyez.nameAprès agrégation,nameMême documentvalueSomme des champs:

19 : 168589

21 : 164705

16 : 162088

9 : 161579

8 : 160459

28 : 159775

15 : 158124

26 : 156609

24 : 156208

11 : 153976

4 : 153479

23 : 152833

12 : 152052

20 : 150718

29 : 150320

17 : 149352

10 : 148473

2 : 147812

5 : 147791

3 : 146158

6 : 145604

7 : 145439

18 : 144984

13 : 144784

14 : 144004

27 : 143564

30 : 140984

22 : 140309

25 : 133879

1 : 133233

Toutes les données,Appuyez.nameAprès agrégation,nameMême documentvalueSomme des champs:

8 : 182091

9 : 180997

16 : 180885

19 : 180262

15 : 179358

26 : 177340

21 : 176165

4 : 174981

24 : 173179

28 : 171964

23 : 169360

17 : 169294

11 : 168995

10 : 168779

14 : 166495

12 : 166439

3 : 164324

6 : 163910

29 : 163629

2 : 162141

18 : 161742

20 : 161294

5 : 161212

7 : 160690

13 : 160489

27 : 160475

22 : 157978

30 : 155007

25 : 153070

1 : 145807

Cet ensemble de données existe bulk.jsonDans le document, Vous pouvez télécharger ici :

 https://raw.githubusercontent.com/zq2599/blog_demos/master/files/bulk.json

Après le téléchargement,Aveccurl La commande importe ces données :

curl -H ‘Content-Type: application/x-ndjson’ -s -XPOST  http://192.168.50.75:9200/testcase/t1/_bulk --data-binary @bulk.json

Inbulk.jsonMoyenne,Parrouting Pour déterminer dans quelle tranche les données seront ,A été validérouting=a Le Premier fragment est écrit ,routing=b Écrivez la deuxième tranche à ,Donc toutbulk.jsonDansrouting La valeur de aEtbDeux.;

Les données et les résultats statistiques ci - dessus sont utilisés javaProduit, L'adresse source correspondante est ici :

 https://raw.githubusercontent.com/zq2599/blog_demos/master/files/GenerateESAggSortData.java

Maintenant que les données sont prêtes , Vous pouvez répéter la question ;

 Question de la récurrence

Après l'importation réussie des données ,Exécuter la commande suivante,SelonnameFaire une agrégation,Oui.name Même document value Ajouter les valeurs des champs :

GET /testcase/t1/_search

{

“size”:0,

“aggs”:{

“names”:{

“terms”: {

“field”: “name”,

“size” :5,

“order”: {

“values”: “desc”

}

},

“aggs”: {

“values”: {

“sum”: {

“field”: “value”

}

}

}

}

}

}

Les résultats sont les suivants::

“buckets” : [

{

“key” : “8”,

“doc_count” : 356,

“values” : {

“value” : 182091.0

}

},

{

“key” : “9”,

“doc_count” : 356,

“values” : {

“value” : 180997.0

}

},

{

“key” : “16”,

“doc_count” : 351,

“values” : {

“value” : 180885.0

}

},

{

“key” : “15”,

“doc_count” : 347,

“values” : {

“value” : 179358.0

}

},

{

“key” : “26”,

“doc_count” : 353,

“values” : {

“value” : 177340.0

}

}

]

Le problème s'est posé.,Dans les données retournées,Quatrième placename- Oui.15,Mais en fait,19 C'est la quatrième place , La liste de comparaison est la suivante :

| Classement | Données réelles | ElasticsearchRetour |

| — | — | — |

| 1 | 8 : 182091 | 8:182091 |

| 2 | 9 : 180997 | 9:180997 |

| 3 | 16 : 180885 | 16:180885 |

| 4 | 19 : 180262 | 15:179358 |

| 5 | 15 : 179358 | 26:177340 |

 Analyse des problèmes

  1. Dans les opérations de tri agrégé , En fait, chaque tranche elle - même trie d'abord , Ensuite, avant chaque tranche 17 Les noms se regroupent à nouveau ,Réorganiser, Avant de trier après 5 Les enregistrements sont retournés comme résultat ;

  2. Pourquoi utiliser avant chaque tranche 17Nom? C'est en utilisant la formule officielle ,L'adresse est: https://www.elastic.co/guide/en/elasticsearch/reference/6.1/search-aggregations-bucket-terms-aggregation.html ,Comme le montre la figure ci - dessous::

Elasticsearch Rassembler l'apprentissage cinq : Analyse des problèmes avec des résultats de tri inexacts ,AlibabajavaMise au point des performances_Interview

Si la demande n'est envoyée qu'à un seul fragment , Juste avant de revenir 5Article (s), Si vous envoyez plus d'une tranche , Le nombre d'entrées retournées par tranche est :5*1.5+10=17

En utilisant une image pour décrire ,Comme le montre la figure ci - dessous:, Violet dans les données agrégées , Est synthétisé à partir de la couleur pourpre des Parties I et II :

Elasticsearch Rassembler l'apprentissage cinq : Analyse des problèmes avec des résultats de tri inexacts ,AlibabajavaMise au point des performances_Interview_02

Comme le montre la figure ci - dessus, Avant la première tranche 17In record (s),Non.nameégal à19Les dossiers de( Parce que le classement de l'enregistrement dans la tranche 1 est 28), Donc après l'agrégation des données des deux tranches ,nameégal à19 L'enregistrement n'est disponible que dans les données de la tranche 2 ,C'est - à - dire:19:168589, Cette valeur n'est pas en tête des données agrégées 5De,Et donc,ESRetour àTop5 Avec des données réelles Top5C'est différent,C'est ça.Elasticsearch Raisons du mauvais tri après agrégation .

Voyons comment résoudre ce problème

 Une des solutions

Il est facile de savoir pourquoi le problème est résolu : Si chaque tranche n'est pas retournée avant 17Nom, Mais avant. 28Nom, Donc les deux tranches contiennent nameégal à19Les dossiers de, Ce paramètre qui spécifie le nombre de retours de tranches est shard_size,Plusshard_size La requête complète pour le paramètre est la suivante :

GET /testcase/t1/_search

{

“size”:0,

“aggs”:{

“names”:{

“terms”: {

“field”: “name”,

“size” :5,

“shard_size”: 28,

“order”: {

“values”: “desc”

}

Vérification des omissions et des lacunes à la fin de l'entrevue

Chaque entrevue est l'occasion de tester vos connaissances et vos compétences techniques,Après l'entrevue, il est recommandé de résumer et de répondre rapidement,Détection des lacunes,Ensuite, l'apprentissage ciblé,Cela augmente les chances de succès de la prochaine entrevue,Peut également augmenter sa propre réserve de connaissances techniques,C'est un double coup..

..Ali, le dernier résumé ci - dessousP6SeniorJavaChamp d'application et réponses des questions obligatoires,Contient le plus completMySQL、Redis、JavaProgrammation simultanée, etc. questions d'entrevue et réponses,Pour référence~

Dis trois fois quelque chose d'important.,Attention+Attention+Attention!

Elasticsearch Rassembler l'apprentissage cinq : Analyse des problèmes avec des résultats de tri inexacts ,AlibabajavaMise au point des performances_Développement de l'arrière - plan_03

Elasticsearch Rassembler l'apprentissage cinq : Analyse des problèmes avec des résultats de tri inexacts ,AlibabajavaMise au point des performances_Java_04

Plus de partage de notes

Elasticsearch Rassembler l'apprentissage cinq : Analyse des problèmes avec des résultats de tri inexacts ,AlibabajavaMise au point des performances_Java_05

Cet article a été publié par CODINGProjet Open Source:【Grandes usines de première ligneJavaAnalyse des questions d'entrevue+Résumé de base notes d'étude+Dernière vidéo d'explication+Code source du projet opérationnel】Inclus

版权声明
本文为[Harmonios Learning]所创,转载请带上原文链接,感谢
https://cdmana.com/2021/11/20211125174441138t.html

Scroll to Top