English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Dans Elasticsearch, la recherche est effectuée en utilisant des requêtes basées sur JSON. Une requête est composée de deux phrases-
Clauses de requête feuilles - Ces clauses sont des correspondances, des termes ou des plages, elles recherchent des valeurs spécifiques dans un champ spécifique.
Clauses de requête composées - Ces requêtes sont des combinaisons de clauses de requête feuilles et de clauses de requête composées, utilisées pour extraire les informations nécessaires.
Elasticsearch supporte un grand nombre de requêtes. Une requête commence par un mot-clé de recherche, puis contient des conditions et des filtres sous forme d'objet JSON. La description des différents types de requêtes suit.
C'est la requête la plus basique ; elle renvoie tout le contenu, chaque objet ayant une note de1.0。
POST /ou, ou non) ou pour différents indices ou qui combinent des appels de fonctions./schools { "query":{ "match_all":{} } }
Lors de l'exécution du code ci-dessus, nous obtenons les résultats suivants-
{ "took": : 7, "timed_out": false, "_shards": { "total": : 1, "successful": : 1, "skipped": 0, "failed": 0 } "hits": { "total": { "value": : 2, "relation": "eq" } "max_score" : 1.0, "hits" : [ { "_index" : "schools", "_type" : "school", "_id" : ""5", "_score" : 1.0, "_source" : { "name" : "Central School", "description" : "CBSE Affiliation", "street" : "Nagan", "city" : "paprola", "state" : "HP", "zip" : ""176115", "location" : [ 31.8955385, 76.8380405 "fully computerized" "fees" : 22"fees": : 00, "Senior Secondary", "beautiful campus" "fully computerized" ],3.3"rating": " } } { "_index" : "schools", "_type" : "school", "_id" : ""4", "_score" : 1.0, "_source" : { "name" : "City Best School", "description" : "ICSE", "street" : "West End", "city" : "Meerut", "state" : "UP", "zip" : ""250002", "location" : [ 28.9926174, 77.692485 "fully computerized" "fees" : 35"fees": : 00, "tags": [ "fully computerized" ],4.5"rating": " } } } } }
Ces requêtes sont utilisées pour la recherche de texte complet, par exemple des chapitres ou des articles de nouvelles. Cette requête fonctionne en fonction de l'analyseur associé à cet index ou document spécifique. Dans cette section, nous discuterons des différents types de requêtes de texte complet.
Cette requête correspond les textes ou les phrases aux valeurs des un ou plusieurs champs.
POST /ou, ou non) ou pour différents indices ou qui combinent des appels de fonctions.*/schools { "query":{ "match" : { "rating":"4.5"rating": " } } }
Après avoir exécuté le code ci-dessus, nous obtenons la réponse suivante :
{ "took": : 44, "timed_out": false, "_shards": { "total": : 1, "successful": : 1, "skipped": 0, "failed": 0 } "hits": { "total": { "value": : 1, "relation": "eq" } "max_score" : 0.47000363, "hits" : [ { "_index" : "schools", "_type" : "school", "_id" : ""4", "_score" : 0.47000363, "_source" : { "name" : "City Best School", "description" : "ICSE", "street" : "West End", "city" : "Meerut", "state" : "UP", "zip" : ""250002", "location" : [ 28.9926174, 77.692485 "fully computerized" "fees" : 35"fees": : 00, "tags": [ "fully computerized" ],4.5"rating": " } } } } }
Cette requête correspond aux textes ou aux phrases qui correspondent à un ou plusieurs champs.
POST /ou, ou non) ou pour différents indices ou qui combinent des appels de fonctions.*/schools { "query":{ "multi_match" : { "query": "paprola" "fields": [ "city", "state" ] } } }
Après avoir exécuté le code ci-dessus, nous obtenons la réponse suivante :
{ "took": : 12, "timed_out": false, "_shards": { "total": : 1, "successful": : 1, "skipped": 0, "failed": 0 } "hits": { "total": { "value": : 1, "relation": "eq" } "max_score" : 0.9808292, "hits" : [ { "_index" : "schools", "_type" : "school", "_id" : ""5", "_score" : 0.9808292, "_source" : { "name" : "Central School", "description" : "CBSE Affiliation", "street" : "Nagan", "city" : "paprola", "state" : "HP", "zip" : ""176115", "location" : [ 31.8955385, 76.8380405 "fully computerized" "fees" : 22"fees": : 00, "Senior Secondary", "beautiful campus" "fully computerized" ],3.3"rating": " } } } } }
Cette requête utilise l'analyseur de requête et le mot-clé query_string.
POST /ou, ou non) ou pour différents indices ou qui combinent des appels de fonctions.*/schools { "query":{ "query_string":{ "query":"beautiful" } } }
Après avoir exécuté le code ci-dessus, nous obtenons la réponse suivante :
{ "took": : 60, "timed_out": false, "_shards": { "total": : 1, "successful": : 1, "skipped": 0, "failed": 0 } "hits": { "total": { "value": : 1, "relation": "eq" } ………………………………….
Ces requêtes traitent principalement des données structurées, telles que les nombres, les dates et les énumérations.
POST /ou, ou non) ou pour différents indices ou qui combinent des appels de fonctions.*/schools { "query":{ "term":{"zip":"176115"} } }
Après avoir exécuté le code ci-dessus, nous obtenons la réponse suivante :
…………………………….. "hits" : [ { "_index" : "schools", "_type" : "school", "_id" : ""5", "_score" : 0.9808292, "_source" : { "name" : "Central School", "description" : "CBSE Affiliation", "street" : "Nagan", "city" : "paprola", "state" : "HP", "zip" : ""176115", "location" : [ 31.8955385, 76.8380405 "fully computerized" } } } …………………………………………..
Cette requête est utilisée pour trouver des objets ayant une valeur comprise entre deux valeurs données. Pour cela, nous devons utiliser des opérateurs, par exemple-
gte −supérieur ou égal à
gt −supérieur à
lte −inférieur ou égal à
lt −inférieur à
Par exemple, observez le code suivant-
POST /ou, ou non) ou pour différents indices ou qui combinent des appels de fonctions.*/schools { "query":{ "range":{ "rating":{ "gte":3.5 } } } }
Après avoir exécuté le code ci-dessus, nous obtenons la réponse suivante :
{ "took": : 24, "timed_out": false, "_shards": { "total": : 1, "successful": : 1, "skipped": 0, "failed": 0 } "hits": { "total": { "value": : 1, "relation": "eq" } "max_score" : 1.0, "hits" : [ { "_index" : "schools", "_type" : "school", "_id" : ""4", "_score" : 1.0, "_source" : { "name" : "City Best School", "description" : "ICSE", "street" : "West End", "city" : "Meerut", "state" : "UP", "zip" : ""250002", "location" : [ 28.9926174, 77.692485 "fully computerized" "fees" : 35"fees": : 00, "tags": [ "fully computerized" ],4.5"rating": " } } } } }
"-
Il existe également d'autres types de requêtes de niveau terme, par exemple Requête existante
−Si une valeur du champ n'est pas vide. Requête manquante
−C'est l'opposé de la requête existante, qui recherche des objets sans champ spécifique ou avec une valeur vide. Requêtes avec jokers ou regexp
Requêtes composées/Ces requêtes sont des ensembles de requêtes différentes, qui sont combinées en utilisant des opérateurs booléens (par exemple, et)
POST /ou, ou non) ou pour différents indices ou qui combinent des appels de fonctions./schools { _search "query": { "bool": { "must": { } "term": {"state": "UP"}} "filter": {22"term": {"fees": " } "minimum_should_match": "00"} 1, "boost": : 1.0 } } }
Après avoir exécuté le code ci-dessus, nous obtenons la réponse suivante :
{ "took": : 6, "timed_out": false, "_shards": { "total": : 1, "successful": : 1, "skipped": 0, "failed": 0 } "hits": { "total": { "value": 0, "relation": "eq" } "max_score": null, "hits": [ } }
Ces requêtes traitent les emplacements géographiques et les géo-objets. Ces requêtes aident à trouver des objets géographiques proches d'une école ou de tout autre emplacement géographique. Vous devez utiliser le type de données géographique.
"mappings": { /geo_example { "properties": { "type": "geo_shape" "location": { "acknowledged": true, } } } }
Après avoir exécuté le code ci-dessus, nous obtenons la réponse suivante :
{ "shards_acknowledged": true, "index": "geo_example" }
Maintenant, nous publierons les données dans l'index créé précédemment.
POST /geo_example/_doc?refresh { "name": "Chapter One, London, UK", "location": { "type": "point", "coordinates": [11.660544, 57.800286} } }
Après avoir exécuté le code ci-dessus, nous obtenons la réponse suivante :
{ "took": : 1, "timed_out": false, "_shards": { "total": : 1, "successful": : 1, "skipped": 0, "failed": 0 } "hits": { "total": { "value": : 2, "relation": "eq" } "max_score" : 1.0, "hits" : [ "_index" : "geo_example", "_type" : "_doc", "_id" : "hASWZ2oBbkdGzVfiXHKD "_score" : 1.0, "_source" : { "name" : "Chapter One, London, UK", "location" : { "type" : "point", "coordinates" : [ 11.660544, 57.800286 } } } } }