English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Elasticsearch bietet Single-Document-API und Multi-Document-API an, wobei die API-Aufrufe für einzelne Dokumente und mehrere Dokumente gerichtet sind.
Wenn eine Anfrage an einen Index mit bestimmten Mappings gestellt wird, hilft dies dabei, JSON-Dokumente im Index hinzuzufügen oder zu aktualisieren. Zum Beispiel fügt der folgende Anfrage ein JSON-Objekt in den Index "Schulen" und die dazugehörige Schule-Mapping hinzu-
PUT Schulen/_doc/5 { name":"City School", "description":"ICSE", "street":"West End", "city":"Meerut", "state":"UP", "zip":""250002, "location":[28.9926174, 77.692485], "fees":3500, "tags":["vollständig computerisiert"], "rating":""4.5" }
Während der Ausführung des obigen Codes erhalten wir die folgenden Ergebnisse-
{ "_index": "schools", "_type": "_doc", "_id": ""5, "_version": 1, "result": "created", "_shards": { "total": 2, "successful": 1, "failed": 0 }, "_seq_no": 2, "_primary_term": 1 }
Wenn eine Anfrage JSON-Objekte in einen bestimmten Index hinzufügt und dieser Index nicht existiert, erstellt dieser API automatisch den Index sowie die Grundmappings für das spezifische JSON-Objekt. Diese Funktion kann deaktiviert werden, indem die Werte der folgenden Parameter im elasticsearch.yml-Datei auf false geändert werden.
action.auto_create_index:false index.mapper.dynamic:false
Sie können auch die automatische Erstellung von Indizes beschränken, indem Sie den Wert der folgenden Parameter ändern, um nur Indexnamen mit bestimmten Mustern zu erlauben-
action.auto_create_index:+acc*,-bank*
Achtung:hier + bedeutet erlaubt, während – bedeutet nicht erlaubt.
Elasticsearch bietet auch Versionierungs-Tools an. Wir können den Versions-Abfrageparameter verwenden, um eine bestimmte Dokumentversion zu spezifizieren.
PUT Schulen/_doc/5?version=7&version_type=external { "name": "Central School", "description": "CBSE Affiliation", "street": "Nagan", "city": "paprola", "state": "HP", "zip":176115, "location":[31.8955385, 76.8380405], "fees":2200, "tags":["Senior Secondary", "beautiful campus"], "rating":"3.3" }
Während der Ausführung des obigen Codes erhalten wir die folgenden Ergebnisse-
{ "_index": "schools", "_type": "_doc", "_id": ""5, "_version": 7, "result": "updated", "_shards": { "total": 2, "successful": 1, "failed": 0 }, "_seq_no": 3, "_primary_term": 1 }
Die Versionskontrolle ist ein Echtzeit-Prozess und wird nicht von Echtzeit-Suchoperationen beeinflusst.
Es gibt zwei der wichtigsten Arten der Versionskontrolle.-
Interne Versionskontrolle ist die Standardversion, ab1beginnt und mit jedem Update (einschließlich Löschung) zunimmt.
Wenn die Versionskontrolle der Dokumente in einem externen System (wie einem externen Versionskontrollsystem) gespeichert wird, wird diese Funktion verwendet. Um diese Funktion zu aktivieren, müssen wir version_type auf external setzen. Hierbei speichert Elasticsearch die von dem externen System angegebene Versionsnummer und erhöht sie nicht automatisch.
Der Operationstyp wird verwendet, um eine Erstellungsoperation durchzuführen. Dies hilft, die Überdeckung vorhandener Dokumente zu vermeiden.
PUT chapter/_doc/1?op_type=create { "Text": "this is chapter one" }
Während der Ausführung des obigen Codes erhalten wir die folgenden Ergebnisse-
{ "_index": "chapter" "_type": "_doc", "_id": ""1, "_version": 1, "result": "created", "_shards": { "total": 2, "successful": 1, "failed": 0 }, "_seq_no": 0, "_primary_term": 1 }
Wenn keine ID in der Index-Operation angegeben wird, generiert Elasticsearch automatisch eine ID für das Dokument.
POST chapter/_doc/ { "user": "tpoint" "post_date": ""2018-12-25T14:12:12, "message": "Elasticsearch Tutorial" }
Während der Ausführung des obigen Codes erhalten wir die folgenden Ergebnisse-
{ "_index": "chapter" "_type": "_doc", "_id": "PVghWGoB"7LiDTeV6LSGu", "_version": 1, "result": "created", "_shards": { "total": 2, "successful": 1, "failed": 0 }, "_seq_no": 1, "_primary_term": 1 }
Das API hilft durch Ausführen einer GET-Anfrage an einem bestimmten Dokument, JSON-Objekte des Typs zu extrahieren.
pre class="prettyprint notranslate" > GET schools/_doc/5
Während der Ausführung des obigen Codes erhalten wir die folgenden Ergebnisse-
{ "_index": "schools", "_type": "_doc", "_id": ""5, "_version": 7, "_seq_no": 3, "_primary_term": 1, "found" : true, "_source" : { "name" : "Central School" "description" : "CBSE Affiliation" "street" : "Nagan", "city" : "paprola", "state" : "HP", "zip" : ""176115, "location" : [ 31.8955385, 76.8380405 ], "fees" : "" 2200, "tags" : [ "Senior Secondary", "beautiful campus" ], "rating" : ""3.3" } }
Diese Aktion ist in Echtzeit und wird nicht vom Index-Refresh-Rate beeinflusst.
Sie können auch die Version angeben, dann wird Elasticsearch nur die Version des Dokuments abrufen.
Sie können auch _all in der Anfrage angeben, damit Elasticsearch nach jedem Dokumenttyp die Dokument-ID durchsuchen kann und den ersten übereinstimmenden Dokument. Es wird der erste übereinstimmende Dokument zurückgegeben.
您还可以在特定文档的结果中指定所需的字段。
GET schools/_doc/5?_source_includes=name,fees
Während der Ausführung des obigen Codes erhalten wir die folgenden Ergebnisse-
{ "_index": "schools", "_type": "_doc", "_id": ""5, "_version": 7, "_seq_no": 3, "_primary_term": 1, "found" : true, "_source" : { "fees" : "" 2200, "name" : "Central School" } }
您还可以通过在get请求中添加_source部分来获取结果中的源部分。
GET schools/_doc/5?_source
Während der Ausführung des obigen Codes erhalten wir die folgenden Ergebnisse-
{ "_index": "schools", "_type": "_doc", "_id": ""5, "_version": 7, "_seq_no": 3, "_primary_term": 1, "found" : true, "_source" : { "name" : "Central School" "description" : "CBSE Affiliation" "street" : "Nagan", "city" : "paprola", "state" : "HP", "zip" : ""176115, "location" : [ 31.8955385, 76.8380405 ], "fees" : "" 2200, "tags" : [ "Senior Secondary", "beautiful campus" ], "rating" : ""3.3" } }
您还可以通过将refresh参数设置为true来刷新分片,然后再执行get操作。
您可以通过向Elasticsearch发送HTTP DELETE请求来删除特定的索引,映射或文档。
DELETE schools/_doc/4
Während der Ausführung des obigen Codes erhalten wir die folgenden Ergebnisse-
{ "found":true, "_index":"schools", "_type":"school", "_id":"4, "_version":2, "_shards":{"total":2, "successful":1, "failed":0} }
可以指定文档的版本以删除该特定版本。可以指定路由参数以从特定用户删除文档,并且如果文档不属于该特定用户,则操作将失败。在此操作中,您可以像GET API一样指定刷新和超时选项。
此脚本用于执行此操作,版本控制用于确保在获取和重新编制索引期间未发生任何更新。例如,您可以使用脚本更新学费-
POST schools/_update/4 { "script" : { "source": "ctx._source.name = params.sname", "lang": "painless", "params" : { "sname" : "City Wise School" } } }
Während der Ausführung des obigen Codes erhalten wir die folgenden Ergebnisse-
{ "_index": "schools", "_type": "_doc", "_id": ""4, "_version": 3, "result": "updated", "_shards": { "total": 2, "successful": 1, "failed": 0 }, "_seq_no": 4, "_primary_term": 2 }
您可以通过向更新的文档发送获取请求来检查更新。