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

Elasticsearch API Documentazione

Elasticsearch offre API per singoli documenti e API per documenti multipli, le chiamate API sono rispettivamente per singoli documenti e più documenti.

API di indicizzazione

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
}

Creazione automatica degli indici

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.

Controllo delle versioni

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-

Controllo della versione interno

Il controllo della versione interno è il tipo di versione predefinito, inizia da 1 e aumenta con ogni aggiornamento (inclusa la cancellazione).

Controllo della versione esterno

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.

Tipo di operazione

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
}

Generazione automatica dell'ID

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
}

Ottieni l'API

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.

Elimina API

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.

Aggiorna 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.