1. ES-Datentyp
Offizielle Dokumentadresse: https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-types.html#_complex_datatypes
Kerndatentypen (Kerndatentypen):
Der Kerndatentyp ist der grundlegendste und am häufigsten verwendete Datentyp von Elasticsearch, der zum Speichern der meisten Daten verwendet wird. Zu diesen Kerndatentypen gehören:
- Text (Text): Wird zum Speichern von Langtextdaten für die Volltextsuche und -analyse verwendet.
- Schlüsselwort: Wird zum Speichern exakter Werte sowie zum Filtern, Aggregieren und exakten Abgleichen verwendet.
- Numerisch: Wird zum Speichern numerischer Daten verwendet, einschließlich Ganzzahlen, Gleitkommazahlen usw.
- Datum (Datum): Wird zum Speichern von Datums- und Uhrzeitdaten verwendet. Da Json keinen Datumstyp hat, beurteilt es, ob es sich um einen Datumstyp handelt, indem es ermittelt, ob die Zeichenfolge dem durch format definierten Format entspricht.
- Boolean (Boolean): Wird zum Speichern boolescher Werte verwendet.
- Binär (binär): Wird zum Speichern von Binärdaten verwendet.
- Bereich: Der Bereichstyp wird zum Speichern von numerischen Bereichen, Datumsbereichen, IP-Bereichen usw. verwendet. Es ermöglicht Ihnen, Bereichsabfragen und Bereichsaggregationsvorgänge für Felder durchzuführen.
Komplexe Datentypen:
Komplexe Datentypen ermöglichen die Speicherung strukturierter Daten wie Objekte, Arrays und verschachtelte Felder. Zu diesen komplexen Datentypen gehören:
- Objekt: Wird zum Speichern von Daten verschachtelter Objekte oder komplexer Strukturen verwendet.
- Array (Array): Eine Liste zum Speichern mehrerer Werte. Verwenden Sie einfach [], um es zu definieren. Alle Werte im Array müssen vom gleichen Datentyp sein. Arrays mit gemischten Datentypen werden nicht unterstützt:
Verwenden Sie komplexe Datentypen, um flexiblere und komplexere Datenstrukturen zu erstellen, die verschachtelte Abfragen und Aggregationsvorgänge unterstützen.
Spezialisierte Datentypen:
Spezialisierte Datentypen sind spezielle Datentypen, die von Elasticsearch bereitgestellt werden, um spezifische Domänenanforderungen zu erfüllen. Zu diesen speziellen Datentypen gehören:
- GeoPoint (geografischer Punkt): Wird zum Speichern geografischer Koordinatenpunkte, zur Unterstützung der Geodatensuche und Entfernungsberechnung verwendet.
- GeoShape (geografische Form): Wird zum Speichern komplexer geografischer Formdaten wie Polygone, Linien und Punkte verwendet.
- IP (IP-Adresse): Wird zum Speichern von IP-Adressen verwendet und unterstützt Abfrage- und Aggregationsvorgänge für IP-Adressbereiche. Im Wesentlichen ein langes Feld
Spezielle Datentypen ermöglichen Elasticsearch eine bessere Verarbeitung von Daten im Zusammenhang mit Geolokalisierung und Netzwerkadressen
2. ES-Dokument-CRUD-Vorgang
neues Dokument
1) Neue Möglichkeit zur Angabe der ID:
PUT /my_index/_doc/1
{
"title": "Elasticsearch",
"content": "Elasticsearch is a distributed, RESTful search and analytics engine."
}
2) Ohne Angabe der ID hinzufügen:
PUT /my_index/_doc
{
"title": "Elasticsearch",
"content": "Elasticsearch is a distributed, RESTful search and analytics engine."
}
3) Die Methode zur Angabe der ID wird hinzugefügt, um versehentliche Änderungen aufgrund derselben ID zu verhindern, und der Operationstyp kann angegeben werden:
PUT /my_index/_doc/1?op_type=create
{
"title": "Elasticsearch",
"content": "Elasticsearch is a distributed, RESTful search and analytics engine."
}
4) Aktivieren Sie die automatische Indexerstellung:
Überprüfen Sie den Status des Schalters auto_create_index:
GET /_cluster/settings
Wie in der Abbildung oben gezeigt, gibt es kein Feld „auto_create_index“ oder „false“ bedeutet, dass es nicht aktiviert ist. Aktivieren Sie die
automatische Indexerstellung:
PUT _cluster/settings
{
"persistent": {
"action.auto_create_index": "true"
}
}
Nachdem die automatische Indexerstellung aktiviert wurde, stimmt das Datenformat automatisch mit der Zuordnung überein.
Dokument ansehen
1) Nach ID anzeigen
GET /my_index/_doc/1
2) Mehrere anzeigen
POST /my_index/_doc/mget
{
"ids" : ["1", "2"]
}
Dokument ändern
1) Dokumentdaten aktualisieren
POST /my_index/_doc/1/_update
{
"doc": {
"content": "Elasticsearch is a distributed, RESTful search and analytics platform."
}
}
2) Fügen Sie ein Feld zum Feld _source hinzu
POST my_index/_update/1
{
"script": "ctx._source.lable = es"
}
3) Löschen Sie im Feld _source ein Feld
POST my_index/_update/1
{
"script": "ctx._source.remove(\"lable \")"
}
4) Aktualisieren Sie die Felder des angegebenen Dokuments gemäß den Bedingungsparametern
upsert Wenn das angegebene Dokument nicht vorhanden ist, wird der im Upsert-Parameter enthaltene Inhalt als neues Dokument in den Index eingefügt. Wenn das angegebene Dokument vorhanden ist, führt die ElasticSearch-Engine die angegebene Aktualisierungslogik aus.
POST my_index/_update/1
{
"script": {
"source": "ctx._source.lable+= params.lable",
"params": {
"lable": "good"
}
},
"upsert": {
"lable": "just so so"
}
}
Dokument löschen
DELETE /my_index/_doc/1