Einfache Suchanfragen in Elasticsearch: Ein umfassender Leitfaden

Schlüsselwortbasierte Abfrage(Match Query)

Die Match-Abfrage wird verwendet, um nach Dokumenten zu suchen, die bestimmte Schlüsselwörter enthalten. Es werden Dokumente zurückgegeben, die mindestens ein entsprechendes Schlüsselwort haben.

Beispiel: Suchen Sie nach Produkten, deren Name das Schlüsselwort laptop  enthält products Index.

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

 

Muss alle Schlüsselwörter enthalten(Match Phrase Query)

Die Match Phrase-Abfrage erfordert, dass alle Schlüsselwörter in der Abfrage nacheinander und in der richtigen Reihenfolge im Dokumenttext erscheinen.

Beispiel: Suchen Sie nach Produkten, deren Beschreibung den Ausdruck enthält HP laptop.

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

 

Muss das gesamte Phrasenpräfix enthalten(Match Phrase Prefix Query)

Die Abfrage „Match Phrase Prefix“ ähnelt der Abfrage „Match Phrase“, ermöglicht jedoch eine teilweise Übereinstimmung des letzten Schlüsselworts.

Beispiel: Suchen Sie nach Produkten, deren Beschreibung mit beginnt laptop.

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

 

Begriffsbasierte Abfrage(Begriffsabfrage)

Die Begriffsabfrage wird verwendet, um nach Dokumenten zu suchen, deren Feld genau den angegebenen Wert aufweist.

Beispiel: Produkte finden, deren category Feld den Wert hat laptop.

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

 

Bereichsbasierte Abfrage(Range Query)

Die Bereichsabfrage hilft bei der Suche nach Dokumenten mit einem Feldwert innerhalb eines angegebenen Bereichs.

Beispiel: Finden Sie Produkte mit Preisen zwischen 500 und 1000.

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

 

Abfrage auf Begriffsebene

Abfragen auf Begriffsebene ermöglichen die Suche nach Dokumenten basierend auf bestimmten Bedingungen wie Exakt-, Präfix-, Bereichs-, Platzhalter- und Fuzzy-Abfragen.

Beispiel: Finden Sie Produkte, deren Name mit beginnt laptop und deren Preise zwischen 500 und 1000 liegen.

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

 

Full-Text Anfrage

Full-Text Abfragen ermöglichen das Durchsuchen von Textfeldern mithilfe von Textanalysealgorithmen, um ähnliche Wörter oder Synonyme zu finden.

Beispiel: Suchen Sie nach Produkten mit Beschreibungen, die entweder computer  oder enthalten laptop.

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

 

Boolesche Abfrage

Boolean Abfragen ermöglichen die Kombination mehrerer Unterabfragen mit unterschiedlichen Suchbedingungen, z. B. „muss alle enthalten“, „muss mindestens eine enthalten“ oder „darf nicht enthalten“, um präzise Suchergebnisse zu erhalten.

Beispiel: Finden Sie Produkte mit einem category Wert laptop  und einem Preis zwischen 500 und 1000.

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

 

Dies sind die grundlegenden Suchanfragen in Elasticsearch, zusammen mit illustrierten Beispielen für jeden Abfragetyp. Bei Verwendung Elasticsearch können Sie diese Abfragen kombinieren, um flexibel und effizient nach Daten zu suchen.