L’API de recherche d’Elasticsearch est un outil très puissant qui permet d’extraire exactement ce que vous cherchez à partir de grandes quantités de données. Cependant, si vous utilisez Elasticsearch comme moteur de recherche dorsal pour une application ou un site Web, vous ne pouvez pas attendre de vos utilisateurs qu’ils sachent comment élaborer des requêtes de recherche dans Elasticsearch. Les modèles de recherche permettent à un développeur de créer une recherche complexe et d’abstraire tous les termes de recherche en paramètres. Ensuite, tout ce que le développeur doit faire est de demander les paramètres à l’utilisateur et d’exécuter la requête de recherche modélisée avec les valeurs fournies par l’utilisateur. Dans ce laboratoire pratique, vous ferez les exercices suivants :
Vous travaillez en tant qu’administrateur d’Elasticsearch et avez été engagé en tant que consultant pour utiliser Elasticsearch en tant qu’appliance de recherche backend pour un site Web qui fournit des analyses littéraires sur les œuvres de Shakespeare. Votre client souhaite que vous implémentiez un modèle de recherche dans Elasticsearch afin qu’il puisse transmettre les entrées fournies par l’utilisateur à partir du site Web dans une requête de recherche Elasticsearch. Les exigences fonctionnelles pour le modèle de recherche sont les suivantes :
PUT /shakespeare
{
"mappings": {
"properties": {
"speaker": {"type": "keyword"},
"play_name": {"type": "keyword"},
"line_id": {"type": "integer"},
"speech_number": {"type": "integer"}
}
}
}
curl -H 'Content-Type: application/x-ndjson' -XPOST 'localhost:9200/bank/account/_bulk?pretty' --data-binary @accounts.json
curl -H 'Content-Type: application/x-ndjson' -XPOST 'localhost:9200/shakespeare/doc/_bulk?pretty' --data-binary @shakespeare_6.0.json
GET _cat/nodes?v
GET _cat/indices?v
POST _scripts/shakespeare_text_search
{
"script": {
"lang": "mustache",
"source": {
"query": {
"match": {
"text_entry": "{{text}}"
}
},
"from": "{{ page }}{{^page}}0{{/page}}",
"size": "{{ size }}{{^size}}25{{/size}}"
}
}
}
GET _search/template
{
"id": "shakespeare_text_search",
"params": {
"text": "love",
"page": 5,
"size": 100
}
}