English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Elasticsearch offre API per singoli documenti e API per documenti multipli, le chiamate API sono rispettivamente per singoli documenti e più documenti.
Quando si richiede un indice con una mappatura specifica, aiuta ad aggiungere o aggiornare documenti JSON nell'indice. Ad esempio, la seguente richiesta aggiunge un oggetto JSON all'indice "scuole" e alla mappatura "scuola"-
PUT schools/_doc/5 { name:"City School", "description":"ICSE", "street":"West End", "city":"Meerut", "state":"UP", "zip":"250002", "location":[28.9926174, 77.692485], "fees":3500, "tags":["fully computerized"], "rating":"4.5" }
Eseguendo il codice sopra, otteniamo i seguenti risultati-
{ "_index": "schools", "_type": "_doc", "_id": "5", "_version": 1, "result": "created", "_shards": { "total": 2, "successful": 1, "failed": 0 }, "_seq_no" : 2, "_primary_term": 1 }
Quando si richiede di aggiungere un oggetto JSON a un indice specifico, se l'indice non esiste, questa API crea automaticamente l'indice e la mappatura di base per l'oggetto JSON specifico. Puoi disabilitare questa funzione modificando i valori dei seguenti parametri esistenti nel file elasticsearch.yml a false.
action.auto_create_index:false index.mapper.dynamic:false
Puoi anche limitare la creazione automatica degli indici, modificando i valori dei seguenti parametri, consentendo solo nomi di indici con modelli specifici-
action.auto_create_index:+acc*,-bank*
Attenzione:qui + significa permesso, mentre – significa non permesso.
Elasticsearch fornisce anche strumenti di controllo delle versioni. Possiamo utilizzare i parametri di query delle versioni per specificare la versione di un documento specifico.
PUT schools/_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" }
Eseguendo il codice sopra, otteniamo i seguenti risultati-
{ "_index": "schools", "_type": "_doc", "_id": "5", "_version": 7, "result": "updated", "_shards": { "total": 2, "successful": 1, "failed": 0 }, "_seq_no": 3, "_primary_term": 1 }
Il controllo della versione è un processo in tempo reale, non influenzato dalle operazioni di ricerca in tempo reale.
Ci sono due tipi di controllo della versione più importanti-
Il controllo della versione interno è il tipo di versione predefinito, inizia da 1 e aumenta con ogni aggiornamento (inclusa la cancellazione).
Quando il controllo della versione del documento è memorizzato in un sistema esterno (ad esempio, un sistema di controllo della versione di terze parti), viene utilizzata questa funzione. Per abilitare questa funzione, dobbiamo impostare version_type su external. In questo caso, Elasticsearch memorizzerà il numero di versione specificato dal sistema esterno e non lo incrementerà automaticamente.
Il tipo di operazione viene utilizzato per forzare l'operazione di creazione. Questo aiuta a evitare di sovrascrivere documenti esistenti.
PUT chapter/_doc/1?op_type=create { "Text": "this is chapter one" }
Eseguendo il codice sopra, otteniamo i seguenti risultati-
{ "_index": "chapter", "_type": "_doc", "_id": "1", "_version": 1, "result": "created", "_shards": { "total": 2, "successful": 1, "failed": 0 }, "_seq_no": 0, "_primary_term": 1 }
Se non viene specificato l'ID nell'operazione di indice, Elasticsearch genererà automaticamente un ID per il documento.
POST chapter/_doc/ { "user": "tpoint", "post_date": "2018-12-25T14:12:12", "message": "Elasticsearch Tutorial" }
Eseguendo il codice sopra, otteniamo i seguenti risultati-
{ "_index": "chapter", "_type": "_doc", "_id": "PVghWGoB7LiDTeV6LSGu", "_version": 1, "result": "created", "_shards": { "total": 2, "successful": 1, "failed": 0 }, "_seq_no": 1, "_primary_term": 1 }
L'API aiuta a estrarre oggetti JSON di tipo specifico eseguendo richieste GET su documenti specifici.
pre class="prettyprint notranslate" > GET schools/_doc/5
Eseguendo il codice sopra, otteniamo i seguenti risultati-
{ "_index": "schools", "_type": "_doc", "_id": "5", "_version": 7, "_seq_no": 3, "_primary_term": 1, "found": true, "_source": { "nome": "Scuola Centrale", "descrizione": "Affiliazione CBSE", "via": "Nagan", "città": "paprola", "stato": "HP", "cap": "176115", "location": [ 31.8955385, 76.8380405 ], "tasse": 2200, "tags": [ "Secondario Superiore" "campus bellissimo" ], "rating": "3.3" } }
Questa operazione è in tempo reale e non è influenzata dalla frequenza di aggiornamento dell'indice.
Puoi anche specificare la versione, poi Elasticsearch recupererà solo la versione del documento.
Puoi anche specificare _all nella richiesta, in modo che Elasticsearch possa cercare l'ID del documento per ogni tipo, restituendo il primo documento corrispondente.
Puoi anche specificare i campi richiesti nei risultati dei documenti specifici.
GET schools/_doc/5?_source_includes=name,fees
Eseguendo il codice sopra, otteniamo i seguenti risultati-
{ "_index": "schools", "_type": "_doc", "_id": "5", "_version": 7, "_seq_no": 3, "_primary_term": 1, "found": true, "_source": { "tasse": 2200, "name": "Scuola Centrale" } }
Puoi anche ottenere la parte di origine dei risultati aggiungendo la parte _source alla richiesta get.
GET schools/_doc/5?_source
Eseguendo il codice sopra, otteniamo i seguenti risultati-
{ "_index": "schools", "_type": "_doc", "_id": "5", "_version": 7, "_seq_no": 3, "_primary_term": 1, "found": true, "_source": { "nome": "Scuola Centrale", "descrizione": "Affiliazione CBSE", "via": "Nagan", "città": "paprola", "stato": "HP", "cap": "176115", "location": [ 31.8955385, 76.8380405 ], "tasse": 2200, "tags": [ "Secondario Superiore" "campus bellissimo" ], "rating": "3.3" } }
Puoi anche aggiornare le spille impostando il parametro refresh su true prima di eseguire l'operazione get.
Puoi eliminare un indice, mappa o documento specifico inviando una richiesta HTTP DELETE a Elasticsearch.
DELETE schools/_doc/4
Eseguendo il codice sopra, otteniamo i seguenti risultati-
{ "found":true, "_index":"schools", "_type":"school", "_id":"4", "_version":2, "_shards":{"total":2, "successful":1, "failed":0} }
Puoi specificare la versione del documento per eliminare quella versione specifica. Puoi specificare i parametri di rotta per eliminare il documento da un utente specifico e se il documento non appartiene a quell'utente specifico, l'operazione fallirà. In questa operazione, puoi specificare le opzioni di refresh e timeout come GET API.
Questo script viene utilizzato per eseguire questa operazione, il controllo della versione viene utilizzato per assicurarsi che non siano stati apportati aggiornamenti durante l'acquisizione e la riedizione dell'indice. Ad esempio, puoi utilizzare lo script per aggiornare il costo della scuola
POST schools/_update/4 { "script": { "source": "ctx._source.name = params.sname", "lang": "painless", "params": { "sname": "Città Scuola" } } }
Eseguendo il codice sopra, otteniamo i seguenti risultati-
{ "_index": "schools", "_type": "_doc", "_id": "4", "_version": 3, "result": "updated", "_shards": { "total": 2, "successful": 1, "failed": 0 }, "_seq_no": 4, "_primary_term": 2 }
Puoi verificare gli aggiornamenti inviando una richiesta di aggiornamento al documento aggiornato.