English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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.
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": "" } } } } }
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.
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": "" } } } } }
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": "" } } } } }
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" } ………………………………….
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" } } } …………………………………………..
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
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": [ ] } }
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 } } } } }