2013-10-24 17 views
10

È possibile aggiornare alcuni valori di campi specifici in elasticsearch senza sovrascrivere altri campi. ?Aggiorna solo il valore di campo specifico in elasticsearch

+0

si può sapere se la mia risposta è stata utile? – javanna

+0

sì grazie per l'aiuto. Ho usato il formato di script e ho seguito [aggiornamento api] (http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/docs-update.html) –

+0

Ottimo, potresti vuoi accettare la risposta quindi ... – javanna

risposta

-1

è possibile effettuare le seguenti operazioni:

  • ottenere il documento
  • aggiornamento vostro campo
  • scrivere il documento indietro

è lo stesso per Solr

se solo scrivere un nuovo documento (con un ID esistente) e riempire solo il campo che si desidera avere aggiornato, il chi il documento (tutti gli altri campi) verrà sovrascritto

+0

Dai un'occhiata a elasticsearch [aggiornamento api] (http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/docs-update.html), che non richiede di presentare l'intero documento da solo ma consente di inviare un documento parziale o una sceneggiatura. – javanna

12

Sì, Elasticsearch supporta aggiornamenti parziali. Ciò significa che è possibile inviare:

  • un documento parziale, che sarà fusa con quella esistente
  • uno script che verrà eseguito in cima al documento esistente

Date un'occhiata al il update api. In entrambi i casi, ciò che accade sotto la cappa, a causa di come funziona la libreria sottostante di lucene, è che il documento da aggiornare viene recuperato, le modifiche vengono applicate ad esso, e il vecchio documento viene sovrascritto con il nuovo. Alla fine della giornata è in realtà una completa riscrittura del documento, ma non è necessario presentare l'intero documento, a meno che non si sia disabilitato lo _source field, abilitato per impostazione predefinita, che è il campo che consente di recuperare a pieno documento per applicare le modifiche ad esso.

+0

Come continuazione potresti dare un'occhiata a questa domanda http://stackoverflow.com/questions/28937946/elasticsearch-particial-update-of-not-indexed-field –

4

Come contributo codebased a questa risposta, la seguente query possono essere utilizzati:

POST /index/type/100100471/_update 
{ 
    "doc" : { 
     "yourProperty" : 10000 
    } 
} 

Questa query aggiorna yourPropertyproprietà solo.

Di conseguenza, appare questa risposta:

{ 
    "_index": "index", 
    "_type": "type", 
    "_id": "100100471", 
    "_version": 1, 
    "_shards": { 
     "total": 0, 
     "successful": 1, 
     "failed": 0 
    } 
} 
Problemi correlati