Query di ricerca di base in Elasticsearch: una guida completa

Query basata su parole chiave(Match Query)

La query Match viene utilizzata per cercare documenti contenenti parole chiave specifiche. Restituirà documenti che hanno almeno una parola chiave corrispondente.

Esempio: trova i prodotti con il nome che contiene la parola chiave laptop  nel file products Index.

GET /products/_search  
{  
  "query": {  
    "match": {  
      "name": "laptop"  
    }  
  }  
}  

 

Deve contenere tutte le parole chiave(Match Phrase Query)

La query Match Phrase richiede che tutte le parole chiave nella query appaiano consecutivamente e nell'ordine corretto all'interno del testo del documento.

Esempio: trova i prodotti con la descrizione che contiene la frase HP laptop.

GET /products/_search  
{  
  "query": {  
    "match_phrase": {  
      "description": "HP laptop"  
    }  
  }  
}  

 

Deve contenere il prefisso dell'intera frase(Match Phrase Prefix Query)

La query Match Phrase Prefix è simile a Match Phrase, ma consente una corrispondenza parziale dell'ultima parola chiave.

Esempio: trova i prodotti con la descrizione che inizia con laptop.

GET /products/_search  
{  
  "query": {  
    "match_phrase_prefix": {  
      "description": "laptop"  
    }  
  }  
}  

 

Query basata sui termini(Query sui termini)

La query Term viene utilizzata per cercare documenti con un campo avente un valore esatto come specificato.

Esempio: trova i prodotti con il category campo che ha il valore laptop.

GET /products/_search  
{  
  "query": {  
    "term": {  
      "category": "laptop"  
    }  
  }  
}  

 

Query basata su intervallo(Range Query)

La query Intervallo consente di cercare documenti con un valore di campo all'interno di un intervallo specificato.

Esempio: trova prodotti con prezzi compresi tra 500 e 1000.

GET /products/_search  
{  
  "query": {  
    "range": {  
      "price": {  
        "gte": 500,  
        "lte": 1000  
      }  
    }  
  }  
}  

 

Query a livello di termine

Le query a livello di termine consentono la ricerca di documenti in base a condizioni specifiche come query esatte, prefisso, intervallo, caratteri jolly e fuzzy.

Esempio: Trova prodotti con il nome che inizia con laptop e prezzi compresi tra 500 e 1000.

GET /products/_search  
{  
  "query": {  
    "bool": {  
      "must": [  
        {  
          "prefix": {  
            "name": "laptop"  
          }  
        },  
        {  
          "range": {  
            "price": {  
              "gte": 500,  
              "lte": 1000  
            }  
          }  
        }  
      ]  
    }  
  }  
}  

 

Full-Text Domanda

Full-Text le query consentono di cercare campi di testo utilizzando algoritmi di analisi del testo per trovare parole o sinonimi simili.

Esempio: trova prodotti con descrizioni che contengono computer  o laptop.

GET /products/_search  
{  
  "query": {  
    "match": {  
      "description": "computer laptop"  
    }  
  }  
}  

 

Interrogazione booleana

Boolean le query consentono di combinare più sottoquery con diverse condizioni di ricerca, ad esempio deve contenere tutto, deve contenerne almeno una o non deve contenere, per ottenere risultati di ricerca precisi.

Esempio: trova prodotti con category essere laptop  e prezzi compresi tra 500 e 1000.

GET /products/_search  
{  
  "query": {  
    "bool": {  
      "must": [  
        {  
          "term": {  
            "category": "laptop"  
          }  
        },  
        {  
          "range": {  
            "price": {  
              "gte": 500,  
              "lte": 1000  
            }  
          }  
        }  
      ]  
    }  
  }  
}  

 

Queste sono le query di ricerca di base in Elasticsearch, insieme a esempi illustrati per ogni tipo di query. Quando si utilizza Elasticsearch, è possibile combinare queste query per cercare i dati in modo flessibile ed efficiente.