Ho un campo in un campo ElasticSearch che non voglio analizzare, io. e. dovrebbe essere memorizzato e confrontato alla lettera. I valori conterranno lettere, numeri, spazi bianchi, trattini, barre e forse altri personaggi.Come non analizzare in ElasticSearch?
Se non fornisco un analizzatore nella mia mappatura per questo campo, il predefinito utilizza ancora un tokenizer che esegue l'hacking della mia stringa letterale in blocchi di parole. Non lo voglio
C'è un analizzatore super semplice che, fondamentalmente, non analizza? O c'è un modo diverso di denotare che questo campo non deve essere analizzato?
Io creo solo l'indice, non faccio altro. Posso usare analizzatori come "inglese" per altri campi che sembrano nomi incorporati per analizzatori preconfigurati. C'è una lista di altri nomi? Forse ce n'è uno adatto ai miei bisogni (ovvero non fare nulla con l'input).
Questo è il mio mappatura attualmente:
{
"my_type": {
"properties": {
"my_field1": { "type": "string", "analyzer": "english" },
"my_field2": { "type": "string" }
}
}
}
my_field1
è dipendente dalla lingua; questo sembra funzionare. my_field2
deve essere testuale. Mi piacerebbe dare un analizzatore lì che semplicemente non fa nulla.
Un valore di esempio per my_field2
sarebbe "B45c 14/04"
.
Ah! Questo è quello che stavo cercando. Mi sono imbattuto in più volte in "not_analyzed", ma ho sempre pensato che usarlo significherebbe che non può essere per niente cercato (apparentemente questo è il significato di "no"). Il link alla documentazione è stato illuminante, grazie! (E dato il tempo accetterò questa risposta a meno che non appaia ancora più utile.) – Alfe
@Alfe, puoi avere a [questa risposta per maggiori informazioni] (http://stackoverflow.com/questions/16911633/not-indexed-field -is-stored-in-index/16923084 # 16923084) inclusa l'opzione 'indice: no' – ramseykhalaf
Possiamo impostarlo globalmente in modo che non analizzi il tipo di stringa per tutti? – coderek