Io davvero non capisco perché in core types link si dice nelle descrizioni attributi (per un numero, per esempio):Perché ho bisogno di "memorizzare": "sì" in elasticsearch?
- negozio - Impostare a yes per memorizzare campo effettiva nell'indice, non di non conservarlo . Il valore predefinito è no (nota, il documento JSON stesso è memorizzato e può essere recuperato da esso)
- index - Impostare su no se il valore non deve essere indicizzato. In questo caso, negozio dovrebbe essere impostata su yes, poiché se non è indicizzato e non memorizzata, non c'è niente a che fare con esso
Le due parti in grassetto sembrano contraddirsi. Se "index":"no", "store":"no"
potrei ancora ottenere il valore dalla fonte. Questo potrebbe essere un buon uso se ho un campo che contiene un URL per esempio. No?
Ho avuto un piccolo esperimento, in cui ho avuto due mappature, in uno un campo è stato impostato su "store":"yes"
e nell'altro a "store":"no"
.
In entrambi i casi ho potuto ancora specificare nella mia domanda:
{"query":{"match_all":{}}, "fields":["my_test_field"]}
e ho avuto la stessa risposta, restituendo il campo.
ho pensato che se "store"
è impostato su "no"
vorrebbe dire non ho potuto prelevare il campo specifico, ma ha dovuto ottenere l'intera _source
e analizzarlo sul lato client.
Quindi, quali sono i vantaggi nell'impostazione di "store"
in "yes"
? È rilevante solo se escludo esplicitamente il campo dal campo "_source"
?
È splendido! Grazie per la spiegazione. – eran
"Ricorda però che il recupero di molti campi memorizzati da lucene potrebbe richiedere una ricerca disco per campo mentre con il recupero solo di _source da lucene e l'analisi per recuperare i campi necessari è solo una ricerca su disco e più veloce nella maggior parte di i casi. " Dato che l'SSD è utilizzato per memorizzare l'indice, l'effetto della diminuzione del numero di ricerche è evidente? "Negli HDD questo è in genere compreso tra 0,2 e 0,8 ms. Gli SSD tipici hanno un tempo di ricerca compreso tra 0,08 e 0,16 ms." –
È anche utile memorizzare esplicitamente i campi che non vengono restituiti in _source. I timestamp sono un esempio. Anche se li hai abilitati su un tipo, non sarai in grado di recuperarli ("campi": ["_timestamp"] non restituirà nulla) a meno che tu non abbia "_timestamp": {"store": true} in la tua mappatura per quel tipo. – csjacobs24