Βασικά ερωτήματα αναζήτησης στο Elasticsearch: Ένας ολοκληρωμένος οδηγός

Ερώτημα βασισμένο σε λέξεις-κλειδιά(Match Query)

Το ερώτημα αντιστοίχισης χρησιμοποιείται για την αναζήτηση εγγράφων που περιέχουν συγκεκριμένες λέξεις-κλειδιά. Θα επιστρέψει έγγραφα που έχουν τουλάχιστον μία αντίστοιχη λέξη-κλειδί.

Παράδειγμα: Βρείτε προϊόντα με το όνομα που περιέχει τη λέξη-κλειδί laptop  στο products Index.

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

 

Πρέπει να περιέχει όλες τις λέξεις-κλειδιά(Match Phrase Query)

Το ερώτημα αντιστοίχισης φράσης απαιτεί όλες οι λέξεις-κλειδιά στο ερώτημα να εμφανίζονται διαδοχικά και με τη σωστή σειρά στο κείμενο του εγγράφου.

Παράδειγμα: Βρείτε προϊόντα με την περιγραφή να περιέχει τη φράση HP laptop.

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

 

Πρέπει να περιέχει ολόκληρο το πρόθεμα φράσης(Match Phrase Prefix Query)

Το ερώτημα Προθέματος αντιστοίχισης φράσης είναι παρόμοιο με τη φράση αντιστοίχισης, αλλά επιτρέπει τη μερική αντιστοίχιση της τελευταίας λέξης-κλειδιού.

Παράδειγμα: Βρείτε προϊόντα με την περιγραφή να ξεκινά με laptop.

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

 

Ερώτημα που βασίζεται σε όρους(ερώτημα όρου)

Το ερώτημα όρος χρησιμοποιείται για την αναζήτηση εγγράφων με ένα πεδίο που έχει μια ακριβή τιμή όπως καθορίζεται.

Παράδειγμα: Βρείτε προϊόντα με το category πεδίο να έχει την τιμή laptop.

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

 

Ερώτημα βάσει εύρους(Range Query)

Το ερώτημα Range βοηθά στην αναζήτηση εγγράφων με τιμή πεδίου εντός ενός καθορισμένου εύρους.

Παράδειγμα: Βρείτε προϊόντα με τιμές μεταξύ 500 και 1000.

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

 

Ερώτημα επιπέδου όρου

Τα ερωτήματα επιπέδου όρου επιτρέπουν την αναζήτηση εγγράφων με βάση συγκεκριμένες συνθήκες όπως τα ερωτήματα Exact, Prefix, Range, Wildcard και Fuzzy.

Παράδειγμα: Βρείτε προϊόντα με το όνομα που ξεκινά από laptop και τιμές μεταξύ 500 και 1000.

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

 

Full-Text Ερώτηση

Full-Text Τα ερωτήματα επιτρέπουν την αναζήτηση πεδίων κειμένου χρησιμοποιώντας αλγόριθμους ανάλυσης κειμένου για την εύρεση παρόμοιων λέξεων ή συνωνύμων.

Παράδειγμα: Βρείτε προϊόντα με περιγραφές που περιέχουν είτε computer  ή laptop.

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

 

Boolean Query

Boolean Τα ερωτήματα επιτρέπουν το συνδυασμό πολλών υποερωτημάτων με διαφορετικές συνθήκες αναζήτησης, όπως πρέπει να περιέχει όλα, πρέπει να περιέχει τουλάχιστον ένα ή δεν πρέπει να περιέχει, για την επίτευξη ακριβών αποτελεσμάτων αναζήτησης.

Παράδειγμα: Βρείτε προϊόντα με την category ύπαρξη laptop  και τιμές μεταξύ 500 και 1000.

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

 

Αυτά είναι τα βασικά ερωτήματα αναζήτησης στο Elasticsearch, μαζί με εικονογραφημένα παραδείγματα για κάθε τύπο ερωτήματος. Όταν χρησιμοποιείτε Elasticsearch, μπορείτε να συνδυάσετε αυτά τα ερωτήματα για να αναζητήσετε δεδομένα με ευελιξία και αποτελεσματικότητα.