English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

ElasticsearchAbfrageDSL

In Elasticsearch wird die Suche durch die Verwendung von JSON-basierten Abfragen durchgeführt. Eine Abfrage besteht aus zwei Klauseln-

  • Blattabfrageclauseln - Diese Klauseln sind Übereinstimmungen, Begriffe oder Bereiche, die spezifische Werte in bestimmten Feldern suchen.

  • Kombinierte Abfrageclauseln - Diese Abfragen sind Kombinationen von Blattabfrageclauseln und anderen kombinierten Abfrageclauseln, um die erforderlichen Informationen abzurufen.

Elasticsearch unterstützt eine Vielzahl von Abfragen. Abfragen beginnen mit einem Suchbegriff und werden in Form eines JSON-Objekts mit Bedingungen und Filtern dargestellt. Nachfolgend werden verschiedene Arten von Abfragen beschrieben.

Alle Abfragen auswählen

Dies ist die grundlegendeste Abfrage; sie gibt alle Inhalte zurück, wobei jeder Objekt eine Punktzahl hat1.0。

POST /oder, oder nicht) oder die Zusammenführung von verschiedenen Indizes oder die Verwendung von Funktionsaufrufen und anderen./schools
{
   "query": {
      "match_all":{}
   }
}

Bei der Ausführung des obigen Codes erhalten wir die folgenden Ergebnisse-

{
   "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": ""
            }
         }
      }
   }
}

Volltextabfrage

Diese Abfragen werden verwendet, um Volltexte zu durchsuchen, wie z.B. Kapitel oder Nachrichtenartikel. Diese Abfrage arbeitet basierend auf dem Analyseur, der mit dem bestimmten Index oder Dokument verbunden ist. In diesem Abschnitt werden wir verschiedene Arten von Volltextabfragen besprechen.

Matchabfrage

Diese Abfrage matcht Text oder Phrasen mit den Werten eines oder mehrerer Felder.

POST /oder, oder nicht) oder die Zusammenführung von verschiedenen Indizes oder die Verwendung von Funktionsaufrufen und anderen.*/schools
{
   "query": {
      "match": {
         "rating":"4.5"rating": ""
      }
   }
}

Nach der Ausführung des obigen Codes erhalten wir die folgende Antwort:

{
   "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": ""
            }
         }
      }
   }
}

Mehrfachvergleichsabfrage

Diese Abfrage matcht Text oder Phrasen, die in einem oder mehreren Feldern übereinstimmen.

POST /oder, oder nicht) oder die Zusammenführung von verschiedenen Indizes oder die Verwendung von Funktionsaufrufen und anderen.*/schools
{
   "query": {
      "multi_match": {
         "query": "paprola"
         "fields": [  "city",  "state"  ]
      }
   }
}

Nach der Ausführung des obigen Codes erhalten wir die folgende Antwort:

{
   "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": ""
            }
         }
      }
   }
}

Abfragezeichenkettenabfrage

Diese Abfrage verwendet den Query-Parser und das query_string-Schlüsselwort.

POST /oder, oder nicht) oder die Zusammenführung von verschiedenen Indizes oder die Verwendung von Funktionsaufrufen und anderen.*/schools
{
   "query": {
      "query_string":{
         "query":"beautiful"
      }
   }
}

Nach der Ausführung des obigen Codes erhalten wir die folgende Antwort:

{
   "took": : 60,
   "timed_out": false,
   "_shards": {
      "total": : 1,
      "successful": : 1,
      "skipped": 0,
      "failed": 0
   }
   "hits": {
      "total": {
      "value": : 1,
      "relation": "eq"
   }
………………………………….

Wortabfrage

Diese Abfragen behandeln hauptsächlich strukturierte Daten, wie Zahlen, Daten und Enumerierungen.

POST /oder, oder nicht) oder die Zusammenführung von verschiedenen Indizes oder die Verwendung von Funktionsaufrufen und anderen.*/schools
{
   "query": {
      "term":{"zip":"176115}
   }
}

Nach der Ausführung des obigen Codes erhalten wir die folgende Antwort:

……………………………..
"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"
      }
   }
}   
…………………………………………..

Bereichsabfrage

Diese Abfrage wird verwendet, um Objekte zu finden, die Werte im angegebenen Wertebereich enthalten. Dazu müssen wir Operatoren wie verwenden.-

  • gte −größer gleich

  • gt −größer als

  • lte −kleiner gleich

  • lt −kleiner als

Beispielsweise, beobachten Sie den folgenden Code-

POST /oder, oder nicht) oder die Zusammenführung von verschiedenen Indizes oder die Verwendung von Funktionsaufrufen und anderen.*/schools
{
   "query": {
      "range": {
         "rating": {
            "gte":3.5
         }
      }
   }
}

Nach der Ausführung des obigen Codes erhalten wir die folgende Antwort:

{
   "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": ""
            }
         }
      }
   }
}

""-

  • Es gibt auch andere Arten von Term-Ebene-Abfragen, wie z.B. Existenzabfragen

  • −Wenn der Wert eines Felds einen nicht leeren Wert hat. Fehlende Abfragen

  • −Das ist genau das Gegenteil von einer Existenzabfrage, die Objekte ohne bestimmte Felder oder leere Werte sucht. Wildcard- oder regexp-Abfragen

−Diese Abfrage verwendet reguläre Ausdrücke, um Muster in Objekten zu finden.

Kombinierte Abfragen/Diese Abfragen sind Sammlungen verschiedener Abfragen, die durch die Verwendung von Booleschen Operatoren (z.B. und) miteinander kombiniert werden.

POST /oder, oder nicht) oder die Zusammenführung von verschiedenen Indizes oder die Verwendung von Funktionsaufrufen und anderen./schools
{
   _search
      "query": {
         "bool": {
            "must": {
         }
         "term": {  "state": "UP"  }
            "filter": {22"term": {  "fees": ""
         }
         "minimum_should_match": "00"} 1,
         "boost": : 1.0
      }
   }
}

Nach der Ausführung des obigen Codes erhalten wir die folgende Antwort:

{
   "took": : 6,
   "timed_out": false,
   "_shards": {
      "total": : 1,
      "successful": : 1,
      "skipped": 0,
      "failed": 0
   }
   "hits": {
      "total": {
         "value": 0,
         "relation": "eq"
      }
      "max_score": null,
      "hits": [ ]
   }
}

Geografische Abfragen

Diese Abfragen verarbeiten Geografien und Geografien. Diese Abfragen helfen, geografische Objekte in der Nähe von Schulen oder anderen geografischen Positionen zu finden. Sie müssen Geografiedaten verwenden.

PUT /geo_example
{
   "mappings": {
      "properties": {
         "location": {
            "type": "geo_shape"
         }
      }
   }
}

Nach der Ausführung des obigen Codes erhalten wir die folgende Antwort:

{    "acknowledged": true,
   "shards_acknowledged": true,
   "index": "geo_example"
}

Nun veröffentlichen wir die Daten im oben erstellten Index.

POST /geo_example/_doc?refresh
{
   "name": "Kapitel Eins, London, UK",
   "location": {
      "type": "point",
      "coordinates": [11.660544, 57.800286}
   }
}

Nach der Ausführung des obigen Codes erhalten wir die folgende Antwort:

{
   "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": "KapitelEins, London, UK",
            "location": {
               "type": "point",
               "coordinates": [
                  11.660544,
                  57.800286
               }
            }
         }
      }
   }