Recherche…


Introduction

L'API de recherche vous permet d'exécuter une requête de recherche et de récupérer des résultats de recherche correspondant à la requête. La requête peut être fournie en utilisant une simple chaîne de requête en tant que paramètre ou en utilisant un corps de requête.

Le routage

Lors de l'exécution d'une recherche, celle-ci sera diffusée vers tous les fragments d'index / indices (round robin entre les répliques). Les fragments qui seront recherchés peuvent être contrôlés en fournissant le paramètre de routage. Par exemple, lors de l'indexation de tweets, la valeur de routage peut être le nom d'utilisateur:

curl -XPOST 'localhost:9200/twitter/tweet?routing=kimchy&pretty' -d'
{
    "user" : "kimchy",
    "postDate" : "2009-11-15T14:12:12",
    "message" : "trying out Elasticsearch"
}'

Rechercher en utilisant le corps de la requête

Des recherches peuvent également être effectuées sur elasticsearch à l'aide d'une recherche DSL. L'élément de requête dans le corps de la requête de recherche permet de définir une requête à l'aide de la requête DSL.

GET /my_index/type/_search
{
    "query" : {
        "term" : { "field_to_search" : "search_item" }
    }
}

Multi recherche

L'option multi_search nous permet de rechercher une requête dans plusieurs champs à la fois.

GET /_search
{
  "query": {
    "multi_match" : {
      "query":    "text to search", 
      "fields": [ "field_1", "field_2" ] 
    }
  }
}

Nous pouvons également augmenter le score de certains champs en utilisant l'opérateur boost (^), et utiliser des caractères génériques dans le nom du champ (*)

GET /_search
    {
      "query": {
        "multi_match" : {
          "query":    "text to search", 
          "fields": [ "field_1^2", "field_2*" ] 
        }
      }
    }

Recherche d'URI et mise en évidence

Une demande de recherche peut être exécutée uniquement en utilisant un URI en fournissant des paramètres de requête. Toutes les options de recherche ne sont pas exposées lors de l'exécution d'une recherche à l'aide de ce mode, mais cela peut s'avérer utile pour des "tests de boucle" rapides.

GET Index/type/_search?q=field:value

Une autre fonctionnalité utile est la mise en évidence des correspondances dans les documents.

GET /_search
{
    "query" : {
        "match": { "field": "value" }
    },
    "highlight" : {
        "fields" : {
            "content" : {}
        }
    }
}

Dans le cas ci-dessus, le champ particulier sera mis en évidence pour chaque accès à la recherche.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow