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

Harmonios Learning 2021-11-25 17:51:21
elastic search aggregate learning problem

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://javamana.com/2021/11/20211125174441138t.html

  1. 数据结构实验八 领会图的两种主要储存结构和图的基本运算算法设计
  2. Hibernate数据校验简介
  3. Il a dépensé 270 000 yuans pour soulever Xiaopeng p7 et a parcouru 3 627 km. Le propriétaire du véhicule a partagé 6 avantages et inconvénients.
  4. 阿里蚂蚁花呗团队面试题:spring+分布式+jvm+session+redis
  5. 【Java入门100例】14.字符串排序——compareTo()
  6. 【Java入门100例】13.修改文件扩展名——字符串替换
  7. Leetcode 79. Word Search [C + + / java detailed problem]
  8. Introduction à la vérification des données hibernantes
  9. Expérience de la structure des données
  10. Spring cloud gateway practice 2: more routing configuration methods
  11. Java network programming - summary overview
  12. 基于语法树的 Java 代码自动化插桩
  13. 云原生 Spring Boot 应用配置 Prometheus + Grafana 监控(保姆级)
  14. Spring cloud gateway practice 2: more routing configuration methods
  15. Jenkins file one line of code to deploy. Net program to k8s
  16. Java network programming - summary overview
  17. Cloud Native Spring Boot application configuration Prometheus + grafana Monitoring (baby - sitter)
  18. Insertion automatique de code Java basée sur l'Arbre syntaxique
  19. Le SUV phare de Xiaopeng, Xiaopeng G9, a fait ses débuts au salon de l'automobile et s'est tenu en position C dans la nouvelle force?
  20. Docker 从入门到实践系列四 - Docker 容器编排利器 Docker Compose
  21. 6年老猿带你掌握Spring Boot实现定时任务的动态增删启停
  22. disruptor笔记之六:常见场景,java教程从入门到精通pdf百度云
  23. Pourquoi InnoDB n'utilise - t - il pas un cache LRU naïf?
  24. Java Reflection (2): quelques opérations de base de reflection
  25. 6年老猿帶你掌握Spring Boot實現定時任務的動態增删啟停
  26. Les singes âgés vous permettent de maîtriser le démarrage et l'arrêt dynamiques des tâches programmées par Spring boot
  27. Docker From Beginning to Practice Series IV - docker Container chorégraphe Clean docker Composition
  28. 编写 java 程序,为家用电脑 ipv6 自动更新 goddy dns 记录(ddns)
  29. java jvm-old gc耗时几十s,导致系统告警
  30. Disruptor note 6: scénario commun, tutoriel Java de l'introduction à la maîtrise du PDF Baidu Cloud
  31. 编写Java程序启动脚本最佳实践
  32. How to get the correct Linux user's documents, music videos and other directories?
  33. Java JVM Old GC prend des dizaines de s, ce qui provoque une alarme système
  34. Écrivez un programme Java pour mettre à jour automatiquement les enregistrements DNS goddy (ddns) pour l'ordinateur domestique IPv6
  35. 編寫Java程序啟動脚本最佳實踐
  36. Meilleures pratiques pour écrire des scripts de démarrage de programmes Java
  37. Notes sur springcloud Eureka
  38. Ajout, suppression et modification simples de mybatis
  39. MySQL Learning - Logging System Redo log and Bin log
  40. Springboot Common comments | @ configuration
  41. Mécanisme d'expiration du cache redis et d'élimination de la mémoire
  42. Analyse concise du code source redis 01 - configuration de l'environnement
  43. Java - carte mémoire de l'objet
  44. Redis source Concise Analysis 02 - SDS String
  45. Why did docker lose to kubernetes? Docker employee readme!
  46. Spring cloud gateway practice 2: more routing configuration methods
  47. Principe de mise en œuvre ultime du mécanisme de concurrence Java sous - jacent
  48. [démarrer avec Java 100 exemples] 13. Modifier l’extension de fichier - remplacement de chaîne
  49. Java期末作业——王者荣耀的洛克王国版游戏
  50. Elasticsearch聚合学习之五:排序结果不准的问题分析,阿里巴巴java性能调优实战
  51. Java期末作業——王者榮耀的洛克王國版遊戲
  52. Java final work - King's Glory Rock Kingdom Game
  53. 【网络编程】TCP 网络应用程序开发
  54. 【网络编程入门】什么是 IP、端口、TCP、Socket?
  55. 【網絡編程入門】什麼是 IP、端口、TCP、Socket?
  56. [Introduction à la programmation réseau] qu'est - ce que IP, port, TCP et socket?
  57. [programmation réseau] développement d'applications réseau TCP
  58. [Java Basics] comprendre les génériques
  59. Dix outils open source que les architectes de logiciels Java devraient maîtriser!!
  60. java架构之路(多线程)synchronized详解以及锁的膨胀升级过程,mysql数据库实用教程pdf