Heim  >  Artikel  >  Backend-Entwicklung  >  Eingehende Untersuchung der Elasticsearch-Abfragesyntax und praktischer Kampf

Eingehende Untersuchung der Elasticsearch-Abfragesyntax und praktischer Kampf

WBOY
WBOYOriginal
2023-10-03 08:42:22834Durchsuche

深入学习 Elasticsearch 查询语法与实战

Eingehende Untersuchung der Elasticsearch-Abfragesyntax und -Praxis

Einführung:
Elasticsearch ist eine auf Lucene basierende Open-Source-Suchmaschine, die hauptsächlich für die verteilte Suche und Analyse verwendet wird und häufig in der Volltextsuche, Protokollanalyse, und Empfehlung von Großdatensystemen und anderen Szenarien. Bei der Verwendung von Elasticsearch für Datenabfragen ist die flexible Verwendung der Abfragesyntax der Schlüssel zur Verbesserung der Abfrageeffizienz. Dieser Artikel befasst sich mit der Elasticsearch-Abfragesyntax und liefert detaillierte Codebeispiele basierend auf tatsächlichen Fällen.

1. Übersicht: Die Abfragesyntax von Elasticsearch verwendet das JSON-Format, das hauptsächlich Abfrageanweisungen, Filterbedingungen, Sortierung, Paging und andere Funktionen umfasst. Durch die flexible Kombination dieser Syntaxen können verschiedene komplexe Datenabfragen umgesetzt werden.

2. Abfrageanweisung

  1. Match-Abfrage:

    Match-Abfrage ist die einfachste Volltextabfrage, die Abfrageergebnisse in bestimmten Feldern basierend auf Schlüsselwörtern abgleicht. Der Beispielcode lautet wie folgt:

    GET /index/_search
    {
      "query": {
     "match": {
       "field": "keyword"
     }
      }
    }

  2. Term-Abfrage:

    Term-Abfrage wird verwendet, um den Wert des angegebenen Felds genau abzugleichen. Der Beispielcode lautet wie folgt:

    GET /index/_search
    {
      "query": {
     "term": {
       "field": "value"
     }
      }
    }

  3. Bereichsabfrage:

    Bereichsabfrage wird verwendet, um die Werte innerhalb des Bereichs des angegebenen Felds abzufragen. Der Beispielcode lautet wie folgt:

    GET /index/_search
    {
      "query": {
     "range": {
       "field": {
         "gte": "start value",
         "lte": "end value"
       }
     }
      }
    }

  4. Bool-Abfrage:

    Bool-Abfrage wird zum Kombinieren mehrerer Abfragebedingungen verwendet und unterstützt logische Beziehungen wie „must“, „must_not“, „sollte“ usw. Der Beispielcode lautet wie folgt:

    GET /index/_search
    {
      "query": {
     "bool": {
       "must": [
         { "match": { "field1": "value1" } },
         { "match": { "field2": "value2" } }
       ],
       "must_not": { "term": { "field3": "value3" } },
       "should": { "term": { "field4": "value4" } }
     }
      }
    }

3. Filterbedingungen

Filterbedingungen werden verwendet, um den Bereich der Abfrageergebnisse einzuschränken und unnötige Berechnungen zu reduzieren. Häufig verwendete Filterbedingungen sind:

    Termfilter: Filter basierend auf dem genauen Wert des Feldes.
  1. Bereichsfilter: Filtern Sie basierend auf dem Bereich des Feldes.
  2. Exists-Filter: Filtert danach, ob das Feld vorhanden ist.
  3. Bool-Filter: Kombinieren Sie mehrere Filterbedingungen.
4. Sortieren

In den Abfrageergebnissen können wir nach dem Wert des angegebenen Felds sortieren. Häufig verwendete Sortiermethoden sind:

    Feldsortierung: Sortieren nach dem Wert des angegebenen Felds.
  1. Score-Sortierung: Sortieren Sie Dokumente nach ihrer Relevanz.
5. Paging

Um zu vermeiden, dass zu viele Daten auf einmal zurückgegeben werden, können wir die Abfrageergebnisse paginieren. Häufig verwendete Paging-Methoden sind:

    From/Size-Paging: Geben Sie die Startposition und Menge der zurückgegebenen Ergebnisse über die From- und Size-Parameter an.
  1. Scroll-Paging: Verwenden Sie die Scroll-API zum Paging.
6. Praktischer Fall

Das Folgende ist ein praktischer Fall, der zeigt, wie die Abfragesyntax von Elasticsearch für Datenabfragen verwendet wird.

Fall: Suchen Sie auf E-Commerce-Websites nach Produktschlüsselwörtern und sortieren Sie diese nach Verkaufsvolumen und Preis.

GET /products/_search
{
  "query": {
    "bool": {
      "must": [
        { "match": { "name": "手机" } }
      ]
    }
  },
  "sort": [
    { "sales": "desc" },
    { "price": "asc" }
  ]
}

In der obigen Abfrage verwenden wir die Match-Anweisung in der Bool-Abfrage, um nach Produkten zu suchen, die „Mobiltelefon“ im Produktnamen enthalten, und verwenden den Sortierparameter, um nach Verkaufsvolumen in absteigender Reihenfolge und Preis in aufsteigender Reihenfolge zu sortieren.

Fazit:

Dieser Artikel bietet eine detaillierte Untersuchung der Abfragesyntax von Elasticsearch und liefert detaillierte Codebeispiele anhand tatsächlicher Fälle. Durch den flexiblen Einsatz dieser Abfragesyntax kann die Effizienz und Genauigkeit der Datenabfrage verbessert werden. In tatsächlichen Projekten können wir je nach spezifischen Anforderungen unterschiedliche Abfragesyntaxen in Kombination verwenden, um unterschiedliche Datenabfrageszenarien zu erfüllen.

Das obige ist der detaillierte Inhalt vonEingehende Untersuchung der Elasticsearch-Abfragesyntax und praktischer Kampf. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn