Tous les produits
Search
Centre de documentation

Elasticsearch:Utilisation du plug-in IK Analyzer (analysis-ik)

Dernière mise à jour :Aug 09, 2026

Le plug-in IK Analyzer (analysis-ik) assure la tokenisation du texte chinois pour Alibaba Cloud Elasticsearch grâce à plusieurs types de dictionnaires intégrés. Personnalisez ou étendez les dictionnaires pour améliorer la précision de la tokenisation et chargez dynamiquement les fichiers de dictionnaire depuis Object Storage Service (OSS) pour une gestion à distance.

Informations générales

Le plug-in IK Analyzer se compose de trois éléments : les tokenizeurs, les fichiers de dictionnaire et les mécanismes de mise à jour.

Important

La version du plug-in IK Analyzer doit correspondre à celle du cluster Elasticsearch. Par exemple, si votre cluster exécute la version 8.17, le plug-in IK Analyzer est également en version 8.17.

  • Tokeniseurs : segmentent le texte chinois en jetons significatifs et contrôlent la granularité de la tokenisation.

  • Fichiers de dictionnaire : fournissent le vocabulaire utilisé par les tokenizeurs pour la segmentation. Les dictionnaires sont personnalisables et extensibles.

  • Méthodes de mise à jour des dictionnaires : prennent en charge les mises à jour à froid et à chaud, vous permettant d'adapter les dictionnaires aux besoins métier.

Règles de tokenisation

L'analyseur IK propose deux modes de tokenisation :

  • ik_max_word : divise le texte avec la granularité la plus fine. Idéal pour les requêtes basées sur des termes.

  • ik_smart : divise le texte avec une granularité plus large. Idéal pour les requêtes basées sur des expressions.

Types de dictionnaires

L'analyseur IK prend en charge les types de dictionnaires suivants.

Type de dictionnaire

Description

Exigences relatives aux fichiers

Méthodes de mise à jour prises en charge

Dictionnaire principal

Le dictionnaire principal par défaut est main.dic. Il contient plus de 270 000 mots chinois.

Lorsque vous configurez un dictionnaire principal pour un index ES, le cluster rapproche les données entrantes de ce dictionnaire lors de l'indexation. Les termes correspondants deviennent recherchables via les mots-clés associés.

Un mot par ligne, enregistré dans un fichier UTF-8 au format DIC.

Dictionnaire de mots vides

Le dictionnaire de mots vides par défaut est stopword.dic. Il inclut des mots vides anglais tels que a, the, and, at, but, etc.

Lorsque vous configurez un dictionnaire de mots vides pour un index ES, le cluster filtre les termes correspondants lors de l'indexation. Les termes filtrés sont exclus de l'index inversé.

Dictionnaire de prépositions

Le dictionnaire de prépositions par défaut est preposition.dic. Il stocke les prépositions pour aider le tokenizer à séparer les prépositions des mots suivants.

Non applicable

Mise à jour à froid

Dictionnaire de quantificateurs

Le dictionnaire de quantificateurs par défaut est quantifier.dic. Il stocke les termes liés aux unités et les quantificateurs pour aider le tokenizer à reconnaître les combinaisons quantificateur-nom.

suffix.dic

Stocke les suffixes pour aider le tokenizer à segmenter les mots comportant des suffixes.

Non applicable

Mise à jour non prise en charge

surname.dic

Stocke les noms de famille chinois courants pour aider le tokenizer à identifier les noms.

Méthodes de mise à jour des dictionnaires

Mettez à jour les dictionnaires si les valeurs par défaut ne répondent pas à vos besoins. L'analyseur IK prend en charge les méthodes suivantes.

Méthode de mise à jour

Description

Scénarios

Mise à jour à froid

Redémarre le cluster ES pour appliquer les modifications du dictionnaire à tous les nœuds.

Les fichiers téléchargés sont distribués à tous les nœuds ES, qui redémarrent ensuite. Les modifications prennent effet après la fin du redémarrage.

  • Remplacer ou supprimer du contenu dans les fichiers de dictionnaire par défaut.

  • Mettre à jour les fichiers de dictionnaire de prépositions ou de quantificateurs.

Mise à jour à chaud

  • Si seul le contenu des dictionnaires existants change et que les noms de fichiers restent identiques, le cluster charge les nouveaux dictionnaires dynamiquement sans redémarrage.

  • Si les noms des fichiers de dictionnaire changent ou si la liste des fichiers de dictionnaire est modifiée (ajout, suppression ou renommage de fichiers), le cluster redémarre pour recharger la configuration. La configuration mise à jour prend effet après la fin du redémarrage. Cela inclut les premières configurations de mise à jour à chaud.

Remarque

Prend uniquement en charge la mise à jour des dictionnaires principaux ou de mots vides.

Important

Lorsque vous configurez la mise à jour à chaud pour la première fois ou que vous modifiez la liste des fichiers de dictionnaire (ajout, suppression ou renommage de fichiers de dictionnaire), le cluster redémarre. Seules les modifications ultérieures portant uniquement sur le contenu de fichiers de dictionnaire existants dont les noms restent inchangés prennent effet dynamiquement sans redémarrage. Planifiez ces opérations pendant les heures creuses pour éviter d'impacter votre activité.

  • Étendre les dictionnaires principaux ou de mots vides en ajoutant des fichiers de dictionnaire personnalisés au-delà des valeurs par défaut.

  • Modifier le contenu des fichiers de dictionnaire principaux ou de mots vides existants (y compris les dictionnaires par défaut et étendus).

Prérequis

  • L'instance est dans l'état Normal. Afficher l'état de l'instance sur la page des détails.

    Remarque

    Cette rubrique utilise une instance Alibaba Cloud ES exécutant la version 7.10.0. Les interfaces de console et les fonctionnalités peuvent varier selon les versions.

  • (Facultatif) Si vous prévoyez de mettre à jour les dictionnaires, effectuez d'abord les étapes suivantes.

    • Pour effectuer une mise à jour via Upload OSS File : commencez par créer un compartiment OSS et télécharger les fichiers de dictionnaire requis.

    • Pour effectuer une mise à jour via Upload On-premises File : enregistrez d'abord les fichiers de dictionnaire requis sur votre machine locale.

Mettre à jour les dictionnaires IK

Mettez à jour les dictionnaires IK si les valeurs par défaut ne répondent pas à vos besoins. Consultez la méthode de mise à jour avant de poursuivre. Pour les index déjà configurés avec la tokenisation IK, les mises à jour de dictionnaire s'appliquent uniquement aux nouvelles données. Pour appliquer les modifications aux données existantes, recréez l'index.

Mise à jour à froid

Pour effectuer une mise à jour à froid :

Avertissement

Les mises à jour à froid redémarrent le cluster. Effectuez cette opération pendant les heures creuses.

  1. Accédez à la page des détails de l'instance.

    1. Connectez-vous à la console Alibaba Cloud Elasticsearch.

    2. Dans le volet de navigation de gauche, cliquez sur Elasticsearch Clusters.

    3. Dans la barre de menu supérieure, sélectionnez un groupe de ressources et une région.

    4. Dans la liste des instances Elasticsearch, cliquez sur l'ID de l'instance cible pour accéder à sa page de détails.

  2. Accédez à la page de mise à jour à froid du plug-in analysis-ik.

    1. Dans le volet de navigation de gauche, choisissez Configuration and Management > Plug-ins.

    2. Sous l'onglet Built-in Plug-ins, localisez le plug-in analysis-ik et cliquez sur Standard Update dans la colonne Actions.

  3. Effectuez la mise à jour à froid.

    1. Dans la boîte de dialogue Configure IK Dictionaries - Standard Update, cliquez sur Edit à côté du dictionnaire cible, téléchargez le fichier de dictionnaire requis selon les instructions, puis cliquez sur Save.

      Vous pouvez télécharger des fichiers de dictionnaire en utilisant l'une des méthodes suivantes :

      • Upload On-premises File : Cliquez sur l'icône image ou faites glisser et déposez votre fichier local selon les instructions.

      • Upload OSS File : Saisissez le nom du compartiment et le nom du fichier de dictionnaire, puis cliquez sur Add.

        • Le compartiment et l'instance Alibaba Cloud ES doivent se trouver dans la même région.

        • Les fichiers de dictionnaire OSS ne sont pas synchronisés automatiquement. Si le fichier source change, effectuez une mise à jour du dictionnaire pour appliquer les modifications.

      Remarque
    2. Cochez la case d'acceptation des risques et cliquez sur OK pour redémarrer l'instance.

      Une fois l'instance redémarrée, la mise à jour du dictionnaire est terminée.

  4. (Facultatif) Testez si la mise à jour du dictionnaire a pris effet.

    1. Connectez-vous à la console Kibana.

    2. Cliquez sur l'icône image dans le coin supérieur gauche et choisissez Management > Developer Tools pour ouvrir l'éditeur de code.

      Exécutez le code suivant pour effectuer une tokenisation à granularité large sur le texte d'entrée Chinese character input method for computers.

      Remarque

      En pratique, remplacez la valeur text par un mot de votre dictionnaire.

      GET _analyze
      {
        "analyzer": "ik_smart",
        "text": "Chinese character input method for computers"
      }

      La réponse attendue est la suivante.

      {
        "tokens" : [
          {
            "token" : "computer",
            "start_offset" : 0,
            "end_offset" : 3,
            "type" : "CN_WORD",
            "position" : 0
          },
          {
            "token" : "Chinese character input",
            "start_offset" : 3,
            "end_offset" : 7,
            "type" : "CN_WORD",
            "position" : 1
          },
          {
            "token" : "method",
            "start_offset" : 7,
            "end_offset" : 9,
            "type" : "CN_WORD",
            "position" : 2
          }
        ]
      }

Mise à jour à chaud

Pour effectuer une mise à jour à chaud :

Remarque

Les modifications portant uniquement sur le contenu de fichiers de dictionnaire existants dont les noms restent inchangés ne redémarrent pas le cluster. Si les noms des fichiers de dictionnaire ou le nombre de fichiers changent, ou si vous configurez la mise à jour à chaud pour la première fois, le cluster redémarre. Effectuez cette opération pendant les heures creuses pour minimiser l'impact sur votre activité. Après le redémarrage, le dictionnaire prend effet automatiquement.

  1. Accédez à la page des détails de l'instance.

    1. Connectez-vous à la console Alibaba Cloud Elasticsearch.

    2. Dans le volet de navigation de gauche, cliquez sur Elasticsearch Clusters.

    3. Dans la barre de menu supérieure, sélectionnez un groupe de ressources et une région.

    4. Dans la liste des instances Elasticsearch, cliquez sur l'ID de l'instance cible pour accéder à sa page de détails.

  2. Accédez à la page de mise à jour à chaud du plug-in analysis-ik.

    1. Dans le volet de navigation de gauche, choisissez Configuration and Management > Plug-ins.

    2. Sous l'onglet Built-in Plug-ins, localisez le plug-in analysis-ik et cliquez sur Rolling Update dans la colonne Actions.

  3. Effectuez la mise à jour à chaud.

    1. Dans la boîte de dialogue Configure IK Dictionaries - Rolling Update, cliquez sur Edit à côté du dictionnaire cible, téléchargez le fichier de dictionnaire requis selon les instructions, puis cliquez sur Save.

      Vous pouvez télécharger des fichiers de dictionnaire en utilisant l'une des méthodes suivantes :

      • Upload On-premises File : Cliquez sur l'icône image ou faites glisser et déposez votre fichier local selon les instructions.

      • Upload OSS File : Saisissez le nom du compartiment et le nom du fichier de dictionnaire, puis cliquez sur Add.

        • Le compartiment et l'instance Alibaba Cloud ES doivent se trouver dans la même région.

        • Les fichiers de dictionnaire OSS ne sont pas synchronisés automatiquement. Si le fichier source change, effectuez une mise à jour du dictionnaire pour appliquer les modifications.

      Remarque
      • Vous pouvez télécharger plusieurs fichiers de dictionnaire. Les noms de fichiers doivent se terminer par .dic. Les noms de fichiers peuvent contenir des lettres, des chiffres et des traits de soulignement, et ne doivent pas dépasser 30 caractères.

      • Pour modifier un fichier de dictionnaire téléchargé, cliquez sur l'icône Download à côté de celui-ci pour télécharger et éditer le fichier. Supprimez ensuite le fichier d'origine et rechargez le fichier mis à jour. Après avoir supprimé le fichier d'origine, cliquez sur Save ; sinon, le système signalera qu'un fichier portant le même nom existe déjà.

    2. Cliquez sur OK et attendez que les nœuds ES terminent le chargement du dictionnaire.

      Les nœuds ES chargent automatiquement les fichiers de dictionnaire. Les temps de chargement varient selon les nœuds — attendez que tous les nœuds aient terminé.

  4. (Facultatif) Testez si la mise à jour du dictionnaire a pris effet.

    1. Connectez-vous à la console Kibana.

    2. Cliquez sur l'icône image dans le coin supérieur gauche et choisissez Management > Developer Tools pour ouvrir l'éditeur de code.

      Exécutez le code suivant pour effectuer une tokenisation à granularité large sur le texte d'entrée Chinese character input method for computers.

      Remarque

      En pratique, remplacez la valeur text par un mot de votre dictionnaire.

      GET _analyze
      {
        "analyzer": "ik_smart",
        "text": "Chinese character input method for computers"
      }

      La réponse attendue est la suivante.

      {
        "tokens" : [
          {
            "token" : "computer",
            "start_offset" : 0,
            "end_offset" : 3,
            "type" : "CN_WORD",
            "position" : 0
          },
          {
            "token" : "Chinese character input",
            "start_offset" : 3,
            "end_offset" : 7,
            "type" : "CN_WORD",
            "position" : 1
          },
          {
            "token" : "method",
            "start_offset" : 7,
            "end_offset" : 9,
            "type" : "CN_WORD",
            "position" : 2
          }
        ]
      }

Utiliser le plug-in IK Analyzer

Tokenisez le texte en utilisant le tokenizer IK avec un filtre Pinyin.

  1. Accédez à la page Developer Tools de Kibana pour votre instance ES.

    1. Connectez-vous à la console Kibana.

    2. Cliquez sur l'icône image dans le coin supérieur gauche et choisissez Management > Developer Tools pour ouvrir l'éditeur de code.

  2. Créez un index et configurez le tokenizer IK et le filtre Pinyin.

    Exécutez la commande suivante pour créer l'index ik_pinyin avec un analyseur personnalisé ik_pinyin_analyzer. Cet analyseur utilise la tokenisation ik_max_word et un filtre Pinyin pour convertir les termes chinois en Pinyin.

    Remarque

    Le filtre Pinyin convertit les jetons en Pinyin après la fin de la tokenisation chinoise.

    PUT ik_pinyin
    {
      "settings":{
        "analysis": {
          "filter": {
            "my_pinyin" : {
                "type" : "pinyin",
                "keep_separate_first_letter" : false,
                "keep_full_pinyin" : true,
                "keep_original" : true,
                "limit_first_letter_length" : 16,
                "lowercase" : true,
                "remove_duplicated_term" : true
              }
          },
          "analyzer": {
            "ik_pinyin_analyzer": {
              "type": "custom",
              "tokenizer": "ik_max_word",
              "filter": ["my_pinyin"]
            }
          }
        }
      },
      "mappings":{
        "properties":{
          "text":{
            "type" : "text",
            "analyzer" : "ik_pinyin_analyzer"
          }
        }
      }
    }

    Les paramètres clés sont décrits ci-dessous.

    • Filtre Pinyin (paramètre filter)

      Remarque

      Tous les paramètres disponibles sont documentés dans Pinyin Analysis for Elasticsearch.

      Paramètre

      Description

      my_pinyin

      Nom du filtre Pinyin personnalisé.

      type

      Définissez sur pinyin pour utiliser un filtre Pinyin.

      keep_separate_first_letter

      Définissez sur false pour exclure les jetons individuels de première lettre pour chaque caractère.

      keep_full_pinyin

      Définissez sur true pour inclure les formes complètes en Pinyin.

      keep_original

      Définissez sur true pour conserver le texte d'entrée original.

      limit_first_letter_length

      Définissez sur 16 pour limiter les séquences de premières lettres à 16 caractères.

      lowercase

      Définissez sur true pour afficher le Pinyin en minuscules.

      remove_duplicated_term

      Définissez sur true pour supprimer les termes dupliqués, par exemple pour éviter "zh, zh".

    • Analyseur (paramètre analyzer) :

      Paramètre

      Description

      ik_pinyin_analyzer

      Nom de l'analyseur personnalisé.

      type

      Définissez sur custom pour définir un analyseur personnalisé.

      tokenizer

      Définissez sur ik_max_word pour diviser le texte avec la granularité la plus fine.

      filter

      Définissez sur my_pinyin pour appliquer le filtre Pinyin my_pinyin.

      Un résultat réussi est présenté ci-dessous.

      {
        "acknowledged": true,
        "shards_acknowledged": true,
        "index": "ik_pinyin"
      }
  3. Vérifiez les résultats de la tokenisation.

    Exécutez le code suivant pour tokeniser le texte d'entrée This is a test.

    GET ik_pinyin/_analyze
    {
      "text": "This is a test",
      "analyzer": "ik_pinyin_analyzer"
    }

    La réponse attendue est la suivante.

    {
      "tokens" : [
        {
          "token" : "zhe",
          "start_offset" : 0,
          "end_offset" : 2,
          "type" : "CN_WORD",
          "position" : 0
        },
        {
          "token" : "this is",
          "start_offset" : 0,
          "end_offset" : 2,
          "type" : "CN_WORD",
          "position" : 0
        },
        {
          "token" : "zs",
          "start_offset" : 0,
          "end_offset" : 2,
          "type" : "CN_WORD",
          "position" : 0
        },
        {
          "token" : "shi",
          "start_offset" : 0,
          "end_offset" : 2,
          "type" : "CN_WORD",
          "position" : 1
        },
        {
          "token" : "ge",
          "start_offset" : 2,
          "end_offset" : 3,
          "type" : "CN_CHAR",
          "position" : 2
        },
        {
          "token" : "one",
          "start_offset" : 2,
          "end_offset" : 3,
          "type" : "CN_CHAR",
          "position" : 2
        },
        {
          "token" : "g",
          "start_offset" : 2,
          "end_offset" : 3,
          "type" : "CN_CHAR",
          "position" : 2
        },
        {
          "token" : "ce",
          "start_offset" : 3,
          "end_offset" : 5,
          "type" : "CN_WORD",
          "position" : 3
        },
        {
          "token" : "shi",
          "start_offset" : 3,
          "end_offset" : 5,
          "type" : "CN_WORD",
          "position" : 4
        },
        {
          "token" : "test",
          "start_offset" : 3,
          "end_offset" : 5,
          "type" : "CN_WORD",
          "position" : 4
        },
        {
          "token" : "cs",
          "start_offset" : 3,
          "end_offset" : 5,
          "type" : "CN_WORD",
          "position" : 4
        }
      ]
    }
    

Optimiser la tokenisation pour les mots alphanumériques mixtes

Lorsque vous utilisez le tokenizer ik_max_word, les chaînes alphanumériques mixtes telles que fawjh6bcm peuvent ne pas être tokenisées efficacement pour la recherche. Pour améliorer le rappel, définissez enable_single_word sur true. Cela divise les mots mixtes en jetons à caractère unique, permettant une correspondance au niveau des caractères.

L'exemple suivant crée un analyseur personnalisé avec enable_single_word activé :

PUT my_index
{
  "settings": {
    "analysis": {
      "analyzer": {
        "ik_single_char_analyzer": {
          "type": "custom",
          "tokenizer": "my_ik_tokenizer"
        }
      },
      "tokenizer": {
        "my_ik_tokenizer": {
          "type": "ik_max_word",
          "enable_single_word": true
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "content": {
        "type": "text",
        "analyzer": "ik_single_char_analyzer"
      }
    }
  }
}

Paramètre

Description

enable_single_word

Définissez sur true pour diviser les chaînes alphanumériques mixtes en jetons de caractères individuels, améliorant ainsi le rappel pour les chaînes telles que les numéros de modèle ou les codes série. Valeur par défaut : false.

Remarque

Ce paramètre est également pris en charge dans les environnements Serverless d'Alibaba Cloud Elasticsearch.

Utiliser le tokenizer ngram pour la recherche mixte chinois-anglais

Lors de la recherche de numéros de modèle anglais concaténés (tels que jh6bcm) mélangés à du texte chinois, l'analyseur IK seul peut ne pas produire de jetons efficaces pour la correspondance partielle. Dans ce cas, utilisez le tokenizer ngram pour compléter ou remplacer l'analyseur IK.

Le tokenizer ngram divise le texte en séquences de caractères contiguës de longueur configurable, permettant la correspondance de sous-chaînes.

L'exemple suivant crée un index qui utilise le tokenizer ngram :

PUT my_ngram_index
{
  "settings": {
    "analysis": {
      "tokenizer": {
        "my_ngram_tokenizer": {
          "type": "ngram",
          "min_gram": 2,
          "max_gram": 3,
          "token_chars": ["letter", "digit"]
        }
      },
      "analyzer": {
        "ngram_analyzer": {
          "type": "custom",
          "tokenizer": "my_ngram_tokenizer"
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "model_number": {
        "type": "text",
        "analyzer": "ngram_analyzer"
      }
    }
  }
}

Paramètre

Description

min_gram

Longueur minimale en caractères d'un gramme. Valeur par défaut : 1.

max_gram

Longueur maximale en caractères d'un gramme. Valeur par défaut : 2.

token_chars

Classes de caractères à inclure dans les jetons. Valeurs valides : letter, digit, whitespace, punctuation, symbol.

Pour plus d'informations sur la configuration du tokenizer ngram, consultez Ngram tokenizer.

FAQ

Les mots en majuscules dans les fichiers de synonymes provoquent des erreurs. Que faire ?

L'analyseur IK est sensible à la casse lors du traitement des fichiers de synonymes. Si un fichier de synonymes contient des mots en majuscules (tels que IT), des erreurs d'analyse peuvent se produire lors de l'indexation.

Vous pouvez résoudre ce problème en utilisant l'une des méthodes suivantes.

  • Convertir tous les synonymes en minuscules : Modifiez votre fichier de synonymes et convertissez toutes les entrées en minuscules avant de les télécharger.

  • Ajouter un filtre de conversion en minuscules à l'analyseur : Ajoutez un filtre lowercase avant le filtre de synonymes dans la configuration de votre analyseur pour normaliser le texte avant la correspondance des synonymes. Exemple :

    PUT my_index
    {
      "settings": {
        "analysis": {
          "filter": {
            "my_synonym_filter": {
              "type": "synonym",
              "synonyms_path": "your_synonyms.txt"
            }
          },
          "analyzer": {
            "ik_synonym_analyzer": {
              "type": "custom",
              "tokenizer": "ik_max_word",
              "filter": ["lowercase", "my_synonym_filter"]
            }
          }
        }
      }
    }
    Important

    Le filtre lowercase doit apparaître avant le filtre de synonymes dans la chaîne de filtres afin de garantir que le texte soit converti en minuscules avant que la correspondance des synonymes ne se produise.

Références

  • API pour la mise à jour à chaud des dictionnaires IK : UpdateHotIkDicts

  • API pour la mise à jour à froid des dictionnaires IK : UpdateDict