Elasticsearch Sélectionner des champs spécifiques

Elasticsearch Selectionner Des Champs Specifiques



Elasticsearch renverra par défaut tous les champs d'un document lors de l'exécution d'une requête de recherche. Ceci est défini par le paramètre _source, qui contient toutes les données stockées dans l'enregistrement lors de l'indexation.

curl -XGET 'http://localhost:9200/netflix/_doc/HXYz_IIBLbuC0z3qKeN2?pretty' -H 'kbn-xsrf : rapports'

Production:







Cependant, vous ne souhaiterez peut-être pas récupérer tous les champs d'un document donné. Dans ce didacticiel, vous apprendrez à sélectionner des champs spécifiques dans un document.



Option Champs Elasticsearch

Le paramètre fields nous permet de récupérer des champs spécifiques dans une requête de recherche. De plus, le paramètre de champ nous permettra de récupérer un ou plusieurs champs. Vous pouvez également mettre en forme les dates et les types de données spatiales à l'aide du paramètre fields.



Par exemple, supposons que nous voulions récupérer les champs index, id, title, release_year, listed in, duration et rating de l'index Netflix, nous pouvons exécuter une requête comme indiqué ci-dessous :





curl -XGET 'http://localhost/netflix/_search' -H 'kbn-xsrf : rapports' -H 'Type de contenu : application/json' -d'
{
'requête': {
'match': {
'_id': 'HXYz_IIBLbuC0z3qKeN2'
}
},
'des champs': [
'indice',
'identifiant',
'Titre',
'année de sortie',
'répertorié_dans',
'durée',
'évaluation'
],
'_source': faux

}'

Dans la requête ci-dessus, nous utilisons l'API de recherche pour rechercher le document avec l'identifiant spécifié dans le paramètre match.

Nous utilisons ensuite le paramètre fields pour récupérer les champs spécifiques du document cible.



Notez que Elasticsearch inclura par défaut le paramètre _source, composé de tous les champs du document. Pour nous assurer que nous ne récupérons que les champs spécifiés, nous désactivons le paramètre _source :

La requête ci-dessus doit renvoyer une réponse comme indiqué :

{
'a pris': 1,
'timed_out': faux,
'_fragments': {
'total': 1,
'réussi': 1,
'sauté': 0,
'échec': 0
},
'les coups': {
'total': {
'valeur': 1,
'relation': 'eq'
},
'max_score': 1,
'les coups': [
{
'_index': 'netflix',
'_id': 'HXYz_IIBLbuC0z3qKeN2',
'_score': 1,
'des champs': {
'listed_in': [
'Documentaires'
],
'durée': [
'90 minutes'
],
'année de sortie': [
2020
],
'évaluation': [
'PG-13'
],
'Titre': [
'Dick Johnson est mort'
]
}
}
]
}
}

Vous pouvez également utiliser le paramètre _source pour définir les champs à renvoyer à partir d'une requête de recherche. Un exemple est illustré ci-dessous :

curl -XGET 'http://localhost:9200/netflix/_search' -H 'kbn-xsrf : rapports' -H 'Type de contenu : application/json' -d'
{
'_source': ['title', 'release_year', 'rating', 'duration'],
'requête': {
'terme': {
'_identifiant': {
'valeur': 'HXYz_IIBLbuC0z3qKeN2'
}
}
}

}'

Dans ce cas, nous spécifions les champs que nous souhaitons récupérer sous forme de tableau dans le paramètre source. La requête ci-dessus doit renvoyer la réponse comme indiqué :

{
'a pris': 0,
'timed_out': faux,
'_fragments': {
'total': 1,
'réussi': 1,
'sauté': 0,
'échec': 0
},
'les coups': {
'total': {
'valeur': 1,
'relation': 'eq'
},
'max_score': 1,
'les coups': [
{
'_index': 'netflix',
'_id': 'HXYz_IIBLbuC0z3qKeN2',
'_score': 1,
'_la source': {
'durée': '90 min',
'release_year': 2020,
'classement': 'PG-13',
'title': 'Dick Johnson est mort'
}
}
]
}

}

Conclusion

Dans cet article, vous avez appris à récupérer des champs spécifiques à partir d'une requête de recherche à l'aide des champs et des paramètres _source.

Pour en savoir plus sur Elasticsearch et ses fonctionnalités, consultez nos tutoriels sur le sujet. Vous êtes assuré de trouver quelque chose d'utile.

Merci d'avoir lu et à bientôt !