2015-03-05 19 views
5

Ho un indice con i seguenti mappingCome eliminare una mappatura campo in elasticsearch

{ 
    "testmap": { 
     "mappings": { 
     "user": { 
      "properties": { 
       "plans": { 
        "type": "nested", 
        "properties": { 
        "user": { 
         "type": "long" 
        } 
        } 
       }, 
       "status": { 
        "type": "integer" 
       } 
      } 
     } 
     } 
    } 
} 

voglio eliminare la mappatura campo di stato. Non mi dispiace perdere dati su quel campo. C'è qualche opzione per cancellare il campo di stato. provato

curl -XDELETE http://192.168.2.2:9200/testmap/user/status 
{"found":false,"_index":"testmap","_type":"user","_id":"status","_version":1 

Il vostro aiuto è molto apprezzato. Grazie.

risposta

4

Non è possibile eliminare il campo status da questa associazione. Se hai davvero bisogno di liberarti di questo campo, dovrai creare un'altra mappatura senza campo status e reindicizzare i tuoi dati. Guarda questo answer.

2

Se è sufficiente modificare il tipo di mapping nel campo dello stato, non è possibile eliminarlo, ma è possibile modificarlo in un tipo multi_field, che indicizza il campo con più serie di opzioni.

I vecchi dati non verranno indicizzati nel nuovo campo, ma le richieste di indicizzazione che si stanno spostando verranno. In alcuni casi d'uso, è un'alternativa decente per "eliminare l'indice e crearne uno nuovo con una nuova mappatura".

https://www.elasticsearch.org/guide/en/elasticsearch/reference/0.90/mapping-multi-field-type.html

+0

L'OP non vuole sostituire il campo 'stato' con un altro. Quindi 'multi_field' non è utile in questo caso. – bittusarkar

+1

Capito. Ma l'impulso per cancellare una mappatura è spesso quello di sostituirlo con uno diverso; 'multi_field' può spesso soddisfare tale necessità senza dover ricreare l'intera mappatura. –

Problemi correlati