Cerco di indicizzare alcuni documenti nidificati in una mappatura Elasticsearch (v2.3.1) che appare come segue (based on this example from the documentation):Tipo annidato in Elasticsearch: "il mapping dell'oggetto non può essere modificato da nidificato a non annidato" durante l'indicizzazione di un documento
PUT /my_index
{
"mappings": {
"blogpost": {
"properties": {
"title": { "type": "string" },
"comments": {
"type": "nested",
"properties": {
"name": { "type": "string" },
"comment": { "type": "string" }
}
}
}
}
}
}
Tuttavia, non capisco come devono essere i miei documenti JSON per adattarsi a tale mappatura. Ho provato con
PUT /my_index/some_type/1
{
"title": "some_title",
"comments": {
"name": "some_name",
"comment": "some_comment"
}
}
così come con
PUT /my_index_some_type/1
{
"title": "some_title",
"comments": [
{
"name": "some_name",
"comment": "some_comment"
}
]
}
che sia risultato in
{
"error":
{
"root_cause":
[
{
"type": "remote_transport_exception",
"reason": "[Caiman][172.18.0.4:9300][indices:data/write/index[p]]"
}
],
"type": "illegal_argument_exception",
"reason": "object mapping [comments] can't be changed from nested to non-nested"
},
"status": 400
}
Quale è il formato corretto di indicizzare i documenti annidati? Tutti gli esempi di lavoro sono molto apprezzati, molti esempi qui su SO o su altre pagine si concentrano su query annidate piuttosto che su come i documenti sono stati indicizzati in precedenza.
Si sta utilizzando il tipo 'blogpost' mappatura nel tuo URL o no? Non è chiaro dalla tua domanda (ad esempio 'some_type' vs' blogpost'). Sembra che tu stia davvero creando un documento di tipo 'some_type' e' comments' si imposterà su un oggetto normale, il che non è permesso dato che hai già un oggetto annidato chiamato 'comments' nel tipo di mapping' blogpost'. – Val
Ahh no, sul serio ... questo è quello che succede quando copi e incolli troppo da fonti diverse. Se vuoi aggiungere questo come risposta, sarò felice di accettarlo in modo da avere un altro esempio completo in giro. – Dirk