Apprendre à se classer pour Amazon OpenSearch Service - Amazon OpenSearch Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Apprendre à se classer pour Amazon OpenSearch Service

OpenSearch utilise un cadre de classement probabiliste appelé BM-25 pour calculer les scores de pertinence. Si un mot-clé distinctif apparaît plus fréquemment dans un document, BM-25 attribue un score de pertinence plus élevé à ce document. Ce cadre ne tient cependant pas compte du comportement de l'utilisateur (comme les données de clics) qui peut améliorer la pertinence.

Learning to Rank est un plugin open source qui vous permet d'utiliser le machine learning et les données comportementales pour affiner la pertinence des documents. Il utilise des modèles issus des bibliothèques XGBoost et Ranklib pour réévaluer les résultats des recherches. Le plugin Elasticsearch LTR a été initialement développé par OpenSource Connections, avec des contributions importantes de la Wikimedia Foundation, de Snagajob Engineering, de Bonsai et de Yelp Engineering. La OpenSearch version du plugin est dérivée du plugin Elasticsearch LTR.

L'apprentissage du classement nécessite OpenSearch Elasticsearch 7.7 ou version ultérieure. Pour utiliser le plugin Learning to Rank, vous devez disposer des autorisations d'administrateur complètes. Pour en savoir plus, veuillez consulter la section Modification de l'utilisateur maître.

Note

Cette documentation fournit un aperçu général du plugin Learning to Rank et vous aide à commencer à l'utiliser. La documentation complète, avec les étapes détaillées et les descriptions des API, est disponible dans la documentation Learning to Rank.

Prise en main de Learning to Rank

Vous devez fournir une liste de jugement, préparer un ensemble de données de formation et entraîner le modèle en dehors d'Amazon OpenSearch Service. Les parties en bleu apparaissent en dehors du OpenSearch service :

Exemple de processus du plugin Learning to Rank.

Étape 1 : Initialiser le plugin

Pour initialiser le plugin Learning to Rank, envoyez la demande suivante à votre domaine de OpenSearch service :

PUT _ltr
{ "acknowledged" : true, "shards_acknowledged" : true, "index" : ".ltrstore" }

Cette commande crée un index .ltrstore caché qui stocke les informations de métadonnées, telles que les ensembles de fonctions et les modèles.

Étape 2 : Créer une liste de jugements

Note

Vous devez effectuer cette étape en dehors du OpenSearch Service.

Une liste de jugements est un ensemble d'exemples à partir desquels un modèle de machine learning apprend. Votre liste de jugements doit inclure les mots-clés importants pour vous et un ensemble de documents notés pour chaque mot-clé.

Dans cet exemple, nous disposons d'une liste de jugements pour un jeu de données de films. Une note de 4 indique une correspondance parfaite. Une note de 0 indique la pire correspondance.

Note Mot clé ID du document Titre du film
4 rambo 7555 Rambo
3 rambo 1370 Rambo III
3 rambo 1369 Rambo 2 : La Mission
3 rambo 1368 La Mission

Préparez une liste de jugements au format suivant :

4 qid:1 # 7555 Rambo 3 qid:1 # 1370 Rambo III 3 qid:1 # 1369 Rambo: First Blood Part II 3 qid:1 # 1368 First Blood where qid:1 represents "rambo"

Pour un exemple plus complet de liste de jugements, consultez jugements de films.

Vous pouvez créer cette liste de jugements manuellement avec l'aide d'annotateurs humains ou la déduire par programmation à partir de données analytiques.

Étape 3 : Créer un ensemble de fonctions

Une fonction est un champ qui correspond à la pertinence d'un document ; par exemple, title, overview, popularity score (nombre de vues), etc.

Créez un ensemble de fonctions avec un modèle Mustache pour chaque caractéristique. Pour plus d'informations sur les fonctions, consultez Utilisation des fonctions.

Dans cet exemple, nous créons un ensemble de caractéristiques movie_features avec les champs title et overview :

POST _ltr/_featureset/movie_features { "featureset" : { "name" : "movie_features", "features" : [ { "name" : "1", "params" : [ "keywords" ], "template_language" : "mustache", "template" : { "match" : { "title" : "{{keywords}}" } } }, { "name" : "2", "params" : [ "keywords" ], "template_language" : "mustache", "template" : { "match" : { "overview" : "{{keywords}}" } } } ] } }

Si vous interrogez l'index .ltrstore d'origine, vous récupérez votre ensemble de fonctions :

GET _ltr/_featureset

Étape 4 : Journaliser les valeurs des fonctions

Les valeurs de fonction sont les scores de pertinence calculés par BM-25 pour chaque fonction.

Combinez l'ensemble de caractéristiques et la liste de jugements pour journaliser les valeurs de caractéristique. Pour plus d'informations sur la journalisation des fonctions, consultez Journalisation des scores des fonctions.

Dans cet exemple, la requête bool récupère les documents notés avec le filtre, puis sélectionne l'ensemble de fonctions avec la requête sltr. La requête ltr_log combine les documents et les fonctions pour journaliser les valeurs de fonctions correspondantes :

POST tmdb/_search { "_source": { "includes": [ "title", "overview" ] }, "query": { "bool": { "filter": [ { "terms": { "_id": [ "7555", "1370", "1369", "1368" ] } }, { "sltr": { "_name": "logged_featureset", "featureset": "movie_features", "params": { "keywords": "rambo" } } } ] } }, "ext": { "ltr_log": { "log_specs": { "name": "log_entry1", "named_query": "logged_featureset" } } } }

Un exemple de réponse peut ressembler à ce qui suit :

{ "took" : 7, "timed_out" : false, "_shards" : { "total" : 1, "successful" : 1, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : { "value" : 4, "relation" : "eq" }, "max_score" : 0.0, "hits" : [ { "_index" : "tmdb", "_type" : "movie", "_id" : "1368", "_score" : 0.0, "_source" : { "overview" : "When former Green Beret John Rambo is harassed by local law enforcement and arrested for vagrancy, the Vietnam vet snaps, runs for the hills and rat-a-tat-tats his way into the action-movie hall of fame. Hounded by a relentless sheriff, Rambo employs heavy-handed guerilla tactics to shake the cops off his tail.", "title" : "First Blood" }, "fields" : { "_ltrlog" : [ { "log_entry1" : [ { "name" : "1" }, { "name" : "2", "value" : 10.558305 } ] } ] }, "matched_queries" : [ "logged_featureset" ] }, { "_index" : "tmdb", "_type" : "movie", "_id" : "7555", "_score" : 0.0, "_source" : { "overview" : "When governments fail to act on behalf of captive missionaries, ex-Green Beret John James Rambo sets aside his peaceful existence along the Salween River in a war-torn region of Thailand to take action. Although he's still haunted by violent memories of his time as a U.S. soldier during the Vietnam War, Rambo can hardly turn his back on the aid workers who so desperately need his help.", "title" : "Rambo" }, "fields" : { "_ltrlog" : [ { "log_entry1" : [ { "name" : "1", "value" : 11.2569065 }, { "name" : "2", "value" : 9.936821 } ] } ] }, "matched_queries" : [ "logged_featureset" ] }, { "_index" : "tmdb", "_type" : "movie", "_id" : "1369", "_score" : 0.0, "_source" : { "overview" : "Col. Troutman recruits ex-Green Beret John Rambo for a highly secret and dangerous mission. Teamed with Co Bao, Rambo goes deep into Vietnam to rescue POWs. Deserted by his own team, he's left in a hostile jungle to fight for his life, avenge the death of a woman and bring corrupt officials to justice.", "title" : "Rambo: First Blood Part II" }, "fields" : { "_ltrlog" : [ { "log_entry1" : [ { "name" : "1", "value" : 6.334839 }, { "name" : "2", "value" : 10.558305 } ] } ] }, "matched_queries" : [ "logged_featureset" ] }, { "_index" : "tmdb", "_type" : "movie", "_id" : "1370", "_score" : 0.0, "_source" : { "overview" : "Combat has taken its toll on Rambo, but he's finally begun to find inner peace in a monastery. When Rambo's friend and mentor Col. Trautman asks for his help on a top secret mission to Afghanistan, Rambo declines but must reconsider when Trautman is captured.", "title" : "Rambo III" }, "fields" : { "_ltrlog" : [ { "log_entry1" : [ { "name" : "1", "value" : 9.425955 }, { "name" : "2", "value" : 11.262714 } ] } ] }, "matched_queries" : [ "logged_featureset" ] } ] } }

Dans l'exemple précédent, la première fonction n'a pas de valeur de fonction, car le mot-clé « rambo » n'apparaît pas dans le champ « title » du document dont l'ID est égal à 1368. Il s'agit d'une valeur de fonction manquante dans les données de formation.

Étape 5 : Créer un ensemble de données de formation

Note

Vous devez effectuer cette étape en dehors du OpenSearch Service.

L'étape suivante consiste à combiner la liste de jugements et les valeurs de fonction pour créer un jeu de données de formation. Si votre liste de jugements d'origine est semblable à ce qui suit :

4 qid:1 # 7555 Rambo 3 qid:1 # 1370 Rambo III 3 qid:1 # 1369 Rambo: First Blood Part II 3 qid:1 # 1368 First Blood

Convertissez-la en jeu de données de formation final comme celui-ci :

4 qid:1 1:12.318474 2:10.573917 # 7555 rambo 3 qid:1 1:10.357875 2:11.950391 # 1370 rambo 3 qid:1 1:7.010513 2:11.220095 # 1369 rambo 3 qid:1 1:0.0 2:11.220095 # 1368 rambo

Vous pouvez effectuer cette étape manuellement ou écrire un programme pour l'automatiser.

Étape 6 : Choisir un algorithme et créer le modèle

Note

Vous devez effectuer cette étape en dehors du OpenSearch Service.

Une fois le jeu de données de formation en place, l'étape suivante consiste à utiliser les bibliothèques XGBoost ou Ranklib pour créer un modèle. Les bibliothèques XGBoost et Ranklib vous permettent de créer des modèles courants, tels que LambdaMART, Random Forests, etc.

Pour savoir comment utiliser XGBoost et Ranklib pour créer le modèle, consultez respectivement le XGBoost et la documentation. RankLib Pour utiliser Amazon SageMaker pour créer le modèle XGBoost, consultez l'algorithme XGBoost.

Étape 7 : Déployer le modèle

Une fois le modèle créé, vous devez le déployer dans le plugin Learning to Rank. Pour plus d'informations sur le déploiement d'un modèle, consultez Téléchargement d'un modèle entraîné.

Dans cet exemple, nous créons un modèle my_ranklib_model à l'aide de la bibliothèque Ranklib :

POST _ltr/_featureset/movie_features/_createmodel?pretty { "model": { "name": "my_ranklib_model", "model": { "type": "model/ranklib", "definition": """## LambdaMART ## No. of trees = 10 ## No. of leaves = 10 ## No. of threshold candidates = 256 ## Learning rate = 0.1 ## Stop early = 100 <ensemble> <tree id="1" weight="0.1"> <split> <feature>1</feature> <threshold>10.357875</threshold> <split pos="left"> <feature>1</feature> <threshold>0.0</threshold> <split pos="left"> <output>-2.0</output> </split> <split pos="right"> <feature>1</feature> <threshold>7.010513</threshold> <split pos="left"> <output>-2.0</output> </split> <split pos="right"> <output>-2.0</output> </split> </split> </split> <split pos="right"> <output>2.0</output> </split> </split> </tree> <tree id="2" weight="0.1"> <split> <feature>1</feature> <threshold>10.357875</threshold> <split pos="left"> <feature>1</feature> <threshold>0.0</threshold> <split pos="left"> <output>-1.67031991481781</output> </split> <split pos="right"> <feature>1</feature> <threshold>7.010513</threshold> <split pos="left"> <output>-1.67031991481781</output> </split> <split pos="right"> <output>-1.6703200340270996</output> </split> </split> </split> <split pos="right"> <output>1.6703201532363892</output> </split> </split> </tree> <tree id="3" weight="0.1"> <split> <feature>2</feature> <threshold>10.573917</threshold> <split pos="left"> <output>1.479954481124878</output> </split> <split pos="right"> <feature>1</feature> <threshold>7.010513</threshold> <split pos="left"> <feature>1</feature> <threshold>0.0</threshold> <split pos="left"> <output>-1.4799546003341675</output> </split> <split pos="right"> <output>-1.479954481124878</output> </split> </split> <split pos="right"> <output>-1.479954481124878</output> </split> </split> </split> </tree> <tree id="4" weight="0.1"> <split> <feature>1</feature> <threshold>10.357875</threshold> <split pos="left"> <feature>1</feature> <threshold>0.0</threshold> <split pos="left"> <output>-1.3569872379302979</output> </split> <split pos="right"> <feature>1</feature> <threshold>7.010513</threshold> <split pos="left"> <output>-1.3569872379302979</output> </split> <split pos="right"> <output>-1.3569872379302979</output> </split> </split> </split> <split pos="right"> <output>1.3569873571395874</output> </split> </split> </tree> <tree id="5" weight="0.1"> <split> <feature>1</feature> <threshold>10.357875</threshold> <split pos="left"> <feature>1</feature> <threshold>0.0</threshold> <split pos="left"> <output>-1.2721362113952637</output> </split> <split pos="right"> <feature>1</feature> <threshold>7.010513</threshold> <split pos="left"> <output>-1.2721363306045532</output> </split> <split pos="right"> <output>-1.2721363306045532</output> </split> </split> </split> <split pos="right"> <output>1.2721362113952637</output> </split> </split> </tree> <tree id="6" weight="0.1"> <split> <feature>1</feature> <threshold>10.357875</threshold> <split pos="left"> <feature>1</feature> <threshold>7.010513</threshold> <split pos="left"> <feature>1</feature> <threshold>0.0</threshold> <split pos="left"> <output>-1.2110036611557007</output> </split> <split pos="right"> <output>-1.2110036611557007</output> </split> </split> <split pos="right"> <output>-1.2110037803649902</output> </split> </split> <split pos="right"> <output>1.2110037803649902</output> </split> </split> </tree> <tree id="7" weight="0.1"> <split> <feature>1</feature> <threshold>10.357875</threshold> <split pos="left"> <feature>1</feature> <threshold>7.010513</threshold> <split pos="left"> <feature>1</feature> <threshold>0.0</threshold> <split pos="left"> <output>-1.165616512298584</output> </split> <split pos="right"> <output>-1.165616512298584</output> </split> </split> <split pos="right"> <output>-1.165616512298584</output> </split> </split> <split pos="right"> <output>1.165616512298584</output> </split> </split> </tree> <tree id="8" weight="0.1"> <split> <feature>1</feature> <threshold>10.357875</threshold> <split pos="left"> <feature>1</feature> <threshold>7.010513</threshold> <split pos="left"> <feature>1</feature> <threshold>0.0</threshold> <split pos="left"> <output>-1.131177544593811</output> </split> <split pos="right"> <output>-1.131177544593811</output> </split> </split> <split pos="right"> <output>-1.131177544593811</output> </split> </split> <split pos="right"> <output>1.131177544593811</output> </split> </split> </tree> <tree id="9" weight="0.1"> <split> <feature>2</feature> <threshold>10.573917</threshold> <split pos="left"> <output>1.1046180725097656</output> </split> <split pos="right"> <feature>1</feature> <threshold>7.010513</threshold> <split pos="left"> <feature>1</feature> <threshold>0.0</threshold> <split pos="left"> <output>-1.1046180725097656</output> </split> <split pos="right"> <output>-1.1046180725097656</output> </split> </split> <split pos="right"> <output>-1.1046180725097656</output> </split> </split> </split> </tree> <tree id="10" weight="0.1"> <split> <feature>1</feature> <threshold>10.357875</threshold> <split pos="left"> <feature>1</feature> <threshold>7.010513</threshold> <split pos="left"> <feature>1</feature> <threshold>0.0</threshold> <split pos="left"> <output>-1.0838804244995117</output> </split> <split pos="right"> <output>-1.0838804244995117</output> </split> </split> <split pos="right"> <output>-1.0838804244995117</output> </split> </split> <split pos="right"> <output>1.0838804244995117</output> </split> </split> </tree> </ensemble> """ } } }

Pour voir le modèle, envoyez la requête suivante :

GET _ltr/_model/my_ranklib_model

Étape 8 : Effectuer une recherche avec Learning to Rank

Une fois le modèle déployé, vous pouvez effectuer une recherche.

Lancez la requête sltr avec les fonctions que vous utilisez et le nom du modèle que vous souhaitez exécuter :

POST tmdb/_search { "_source": { "includes": ["title", "overview"] }, "query": { "multi_match": { "query": "rambo", "fields": ["title", "overview"] } }, "rescore": { "query": { "rescore_query": { "sltr": { "params": { "keywords": "rambo" }, "model": "my_ranklib_model" } } } } }

Avec Learning to Rank, « Rambo » est le premier résultat qui apparaît, car nous lui avons attribué la note la plus élevée dans la liste de jugements :

{ "took" : 12, "timed_out" : false, "_shards" : { "total" : 1, "successful" : 1, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : { "value" : 7, "relation" : "eq" }, "max_score" : 13.096414, "hits" : [ { "_index" : "tmdb", "_type" : "movie", "_id" : "7555", "_score" : 13.096414, "_source" : { "overview" : "When governments fail to act on behalf of captive missionaries, ex-Green Beret John James Rambo sets aside his peaceful existence along the Salween River in a war-torn region of Thailand to take action. Although he's still haunted by violent memories of his time as a U.S. soldier during the Vietnam War, Rambo can hardly turn his back on the aid workers who so desperately need his help.", "title" : "Rambo" } }, { "_index" : "tmdb", "_type" : "movie", "_id" : "1370", "_score" : 11.17245, "_source" : { "overview" : "Combat has taken its toll on Rambo, but he's finally begun to find inner peace in a monastery. When Rambo's friend and mentor Col. Trautman asks for his help on a top secret mission to Afghanistan, Rambo declines but must reconsider when Trautman is captured.", "title" : "Rambo III" } }, { "_index" : "tmdb", "_type" : "movie", "_id" : "1368", "_score" : 10.442155, "_source" : { "overview" : "When former Green Beret John Rambo is harassed by local law enforcement and arrested for vagrancy, the Vietnam vet snaps, runs for the hills and rat-a-tat-tats his way into the action-movie hall of fame. Hounded by a relentless sheriff, Rambo employs heavy-handed guerilla tactics to shake the cops off his tail.", "title" : "First Blood" } }, { "_index" : "tmdb", "_type" : "movie", "_id" : "1369", "_score" : 10.442155, "_source" : { "overview" : "Col. Troutman recruits ex-Green Beret John Rambo for a highly secret and dangerous mission. Teamed with Co Bao, Rambo goes deep into Vietnam to rescue POWs. Deserted by his own team, he's left in a hostile jungle to fight for his life, avenge the death of a woman and bring corrupt officials to justice.", "title" : "Rambo: First Blood Part II" } }, { "_index" : "tmdb", "_type" : "movie", "_id" : "31362", "_score" : 7.424202, "_source" : { "overview" : "It is 1985, and a small, tranquil Florida town is being rocked by a wave of vicious serial murders and bank robberies. Particularly sickening to the authorities is the gratuitous use of violence by two “Rambo” like killers who dress themselves in military garb. Based on actual events taken from FBI files, the movie depicts the Bureau’s efforts to track down these renegades.", "title" : "In the Line of Duty: The F.B.I. Murders" } }, { "_index" : "tmdb", "_type" : "movie", "_id" : "13258", "_score" : 6.43182, "_source" : { "overview" : """Will Proudfoot (Bill Milner) is looking for an escape from his family's stifling home life when he encounters Lee Carter (Will Poulter), the school bully. Armed with a video camera and a copy of "Rambo: First Blood", Lee plans to make cinematic history by filming his own action-packed video epic. Together, these two newfound friends-turned-budding-filmmakers quickly discover that their imaginative ― and sometimes mishap-filled ― cinematic adventure has begun to take on a life of its own!""", "title" : "Son of Rambow" } }, { "_index" : "tmdb", "_type" : "movie", "_id" : "61410", "_score" : 3.9719706, "_source" : { "overview" : "It's South Africa 1990. Two major events are about to happen: The release of Nelson Mandela and, more importantly, it's Spud Milton's first year at an elite boys only private boarding school. John Milton is a boy from an ordinary background who wins a scholarship to a private school in Kwazulu-Natal, South Africa. Surrounded by boys with nicknames like Gecko, Rambo, Rain Man and Mad Dog, Spud has his hands full trying to adapt to his new home. Along the way Spud takes his first tentative steps along the path to manhood. (The path it seems could be a rather long road). Spud is an only child. He is cursed with parents from well beyond the lunatic fringe and a senile granny. His dad is a fervent anti-communist who is paranoid that the family domestic worker is running a shebeen from her room at the back of the family home. His mom is a free spirit and a teenager's worst nightmare, whether it's shopping for Spud's underwear in the local supermarket", "title" : "Spud" } } ] } }

Si vous effectuez une recherche sans utiliser le plugin Learning to Rank, elle OpenSearch renvoie des résultats différents :

POST tmdb/_search { "_source": { "includes": ["title", "overview"] }, "query": { "multi_match": { "query": "Rambo", "fields": ["title", "overview"] } } }
{ "took" : 5, "timed_out" : false, "_shards" : { "total" : 1, "successful" : 1, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : { "value" : 5, "relation" : "eq" }, "max_score" : 11.262714, "hits" : [ { "_index" : "tmdb", "_type" : "movie", "_id" : "1370", "_score" : 11.262714, "_source" : { "overview" : "Combat has taken its toll on Rambo, but he's finally begun to find inner peace in a monastery. When Rambo's friend and mentor Col. Trautman asks for his help on a top secret mission to Afghanistan, Rambo declines but must reconsider when Trautman is captured.", "title" : "Rambo III" } }, { "_index" : "tmdb", "_type" : "movie", "_id" : "7555", "_score" : 11.2569065, "_source" : { "overview" : "When governments fail to act on behalf of captive missionaries, ex-Green Beret John James Rambo sets aside his peaceful existence along the Salween River in a war-torn region of Thailand to take action. Although he's still haunted by violent memories of his time as a U.S. soldier during the Vietnam War, Rambo can hardly turn his back on the aid workers who so desperately need his help.", "title" : "Rambo" } }, { "_index" : "tmdb", "_type" : "movie", "_id" : "1368", "_score" : 10.558305, "_source" : { "overview" : "When former Green Beret John Rambo is harassed by local law enforcement and arrested for vagrancy, the Vietnam vet snaps, runs for the hills and rat-a-tat-tats his way into the action-movie hall of fame. Hounded by a relentless sheriff, Rambo employs heavy-handed guerilla tactics to shake the cops off his tail.", "title" : "First Blood" } }, { "_index" : "tmdb", "_type" : "movie", "_id" : "1369", "_score" : 10.558305, "_source" : { "overview" : "Col. Troutman recruits ex-Green Beret John Rambo for a highly secret and dangerous mission. Teamed with Co Bao, Rambo goes deep into Vietnam to rescue POWs. Deserted by his own team, he's left in a hostile jungle to fight for his life, avenge the death of a woman and bring corrupt officials to justice.", "title" : "Rambo: First Blood Part II" } }, { "_index" : "tmdb", "_type" : "movie", "_id" : "13258", "_score" : 6.4600153, "_source" : { "overview" : """Will Proudfoot (Bill Milner) is looking for an escape from his family's stifling home life when he encounters Lee Carter (Will Poulter), the school bully. Armed with a video camera and a copy of "Rambo: First Blood", Lee plans to make cinematic history by filming his own action-packed video epic. Together, these two newfound friends-turned-budding-filmmakers quickly discover that their imaginative ― and sometimes mishap-filled ― cinematic adventure has begun to take on a life of its own!""", "title" : "Son of Rambow" } } ] } }

En fonction des performances estimées du modèle, ajustez la liste de jugements et les fonctions. Répétez ensuite les étapes 2 à 8 pour améliorer les résultats du classement au fil du temps.

API Learning to Rank

Utilisez les opérations Learning to Rank pour travailler par programmation avec des ensembles de fonctions et des modèles.

Créer un magasin

Crée un index .ltrstore caché qui stocke les informations de métadonnées, telles que les ensembles de fonctions et les modèles.

PUT _ltr

Supprimer le magasin

Supprime l'index .ltrstore caché et réinitialise le plugin.

DELETE _ltr

Créer un ensemble de fonctions

Crée un ensemble de fonctions.

POST _ltr/_featureset/<name_of_features>

Supprimer un ensemble de fonctions

Supprime un ensemble de fonctions.

DELETE _ltr/_featureset/<name_of_feature_set>

Obtenir un ensemble de fonctions

Récupère un ensemble de fonctions.

GET _ltr/_featureset/<name_of_feature_set>

Créer un modèle

Crée un modèle.

POST _ltr/_featureset/<name_of_feature_set>/_createmodel

Supprimer un modèle

Supprime un modèle.

DELETE _ltr/_model/<name_of_model>

Obtenir un modèle

Récupère un modèle.

GET _ltr/_model/<name_of_model>

Obtenir des statistiques

Fournit des informations sur le comportement du plugin.

GET _ltr/_stats

Vous pouvez également utiliser des filtres pour récupérer une seule statistique :

GET _ltr/_stats/<stat>

En outre, vous pouvez limiter les informations à un seul nœud du cluster :

GET _ltr/_stats/<stat>/nodes/<nodeId> { "_nodes" : { "total" : 1, "successful" : 1, "failed" : 0 }, "cluster_name" : "873043598401:ltr-77", "stores" : { ".ltrstore" : { "model_count" : 1, "featureset_count" : 1, "feature_count" : 2, "status" : "green" } }, "status" : "green", "nodes" : { "DjelK-_ZSfyzstO5dhGGQA" : { "cache" : { "feature" : { "eviction_count" : 0, "miss_count" : 0, "entry_count" : 0, "memory_usage_in_bytes" : 0, "hit_count" : 0 }, "featureset" : { "eviction_count" : 2, "miss_count" : 2, "entry_count" : 0, "memory_usage_in_bytes" : 0, "hit_count" : 0 }, "model" : { "eviction_count" : 2, "miss_count" : 3, "entry_count" : 1, "memory_usage_in_bytes" : 3204, "hit_count" : 1 } }, "request_total_count" : 6, "request_error_count" : 0 } } }

Les statistiques sont fournies à deux niveaux, nœud et cluster, comme indiqué dans les tableaux suivants :

Statistiques de niveau nœud
Nom de champ Description
request_total_count Nombre total de demandes de classement.
request_error_count Nombre total de demandes qui ont échoué.
cache Statistiques sur tous les caches (fonctions, ensembles de fonctions, modèles). Un accès au cache se produit lorsqu'un utilisateur interroge le plugin et que le modèle est déjà chargé en mémoire.
cache.eviction_count Nombre d'évictions du cache.
cache.hit_count Nombre d'accès au cache.
cache.miss_count Nombre d'échecs d'accès au cache. Un échec d'accès au cache se produit lorsqu'un utilisateur interroge le plugin et que le modèle n'a pas encore été chargé en mémoire.
cache.entry_count Nombre d'entrées dans le cache.
cache.memory_usage_in_bytes Mémoire totale utilisée en octets.
cache.cache_capacity_reached Indique si la limite de cache est atteinte.
Statistiques de niveau cluster
Nom de champ Description
stores Indique où sont stockés les ensembles de fonctions et les métadonnées du modèle. (Le magasin par défaut est « .ltrstore ». Sinon, le préfixe « .ltrstore_ » est ajouté à un nom fourni par l'utilisateur).
stores.status Statut de l'index.
stores.feature_sets Nombre d'ensembles de fonctions.
stores.features_count Nombre de fonctions.
stores.model_count Nombre de modèles.
status Statut du plugin basé sur celui des index du Feature Store (rouge, jaune ou vert) et sur l'état du disjoncteur (ouvert ou fermé).
cache.cache_capacity_reached Indique si la limite de cache est atteinte.

Obtenir les statistiques du cache

Renvoie des statistiques relatives à l'utilisation du cache et de la mémoire.

GET _ltr/_cachestats { "_nodes": { "total": 2, "successful": 2, "failed": 0 }, "cluster_name": "opensearch-cluster", "all": { "total": { "ram": 612, "count": 1 }, "features": { "ram": 0, "count": 0 }, "featuresets": { "ram": 612, "count": 1 }, "models": { "ram": 0, "count": 0 } }, "stores": { ".ltrstore": { "total": { "ram": 612, "count": 1 }, "features": { "ram": 0, "count": 0 }, "featuresets": { "ram": 612, "count": 1 }, "models": { "ram": 0, "count": 0 } } }, "nodes": { "ejF6uutERF20wOFNOXB61A": { "name": "opensearch1", "hostname": "172.18.0.4", "stats": { "total": { "ram": 612, "count": 1 }, "features": { "ram": 0, "count": 0 }, "featuresets": { "ram": 612, "count": 1 }, "models": { "ram": 0, "count": 0 } } }, "Z2RZNWRLSveVcz2c6lHf5A": { "name": "opensearch2", "hostname": "172.18.0.2", "stats": { ... } } } }

Effacer le cache

Efface le cache du plugin. Utilisez cette opération pour actualiser le modèle.

POST _ltr/_clearcache