La plupart des opérations dans elasticsearch s'effectuent via les actions correspondantes, qui se trouvent dans le package d'actions. Sa structure est illustrée dans la figure ci-dessous :
Voici une capture d'écran partielle du package Action, qui contient des actions correspondant à diverses fonctions. Les packages de chaque action sont également très similaires à index. Ces actions héritent toutes de l’action de base, leur mise en œuvre est donc très similaire. La figure suivante montre la relation d'héritage d'indexaction
Ces actions ne sont que des substituts et n'implémentent pas de fonctions réelles, elles sont donc également très faciles à mettre en œuvre. Leur fonction principale est de fournir des méthodes pour créer de nouvelles réponses et requêtes, correspondant aux noms d'opérations correspondants. Prenons l'exemple d'indexaction. Son diagramme de méthode est le suivant :
Vous pouvez voir qu'il ne fournit que deux nouvelles méthodes de réponse et de requête, et un champ NOM de mot sera utilisé pour les appels d'action ultérieurs. milieu. La fonction correspondante est implémentée dans la transportAction correspondante.
L'interface TransportAction est héritée par tous les tansportAction. Lorsque le client appelle l'interface correspondante du client, le client enverra la requête à l'exécution de transportAction. Le TransportAction de chaque fonction implémente la méthode doExecute, et la logique de la fonction est implémentée dans cette méthode. Nous n'en parlerons pas ici pour l'instant. L'implémentation correspondante sera vue dans l'analyse fonctionnelle ultérieure.
Il existe un tel morceau de code dans l'analyse client :
TransportAction
registerAction(NodesInfoAction.INSTANCE, TransportNodesInfoAction.class); registerAction(NodesStatsAction.INSTANCE, TransportNodesStatsAction.class); registerAction(NodesShutdownAction.INSTANCE, TransportNodesShutdownAction.class); registerAction(NodesRestartAction.INSTANCE, TransportNodesRestartAction.class); registerAction(NodesHotThreadsAction.INSTANCE, TransportNodesHotThreadsAction.class); registerAction(ClusterStatsAction.INSTANCE, TransportClusterStatsAction.class); registerAction(ClusterStateAction.INSTANCE, TransportClusterStateAction.class); registerAction(ClusterHealthAction.INSTANCE, TransportClusterHealthAction.class)
Seule une partie du contenu est affichée ici, où le module liera l'action correspondante et TransportAction. De cette façon, lorsque le client aura besoin de recevoir une demande, il trouvera l'instance tansportAction correspondante en fonction de l'instance d'action correspondante, et la demande finale sera traitée sous celle-ci.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!