2015-03-05 4 views
5

Ich habe einen Index mit Mapping folgendenWie eine Feldzuordnung in Elasticsearch löscht

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

Ich möchte Statusfeldzuordnung löschen. Es macht mir nichts aus, Daten in diesem Bereich zu verlieren. Gibt es eine Option, um das Statusfeld zu löschen? Versuchte

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

Ihre Hilfe sehr geschätzt wird. Vielen Dank.

Antwort

4

Sie können das Feld status nicht aus diesem Mapping löschen. Wenn Sie dieses Feld wirklich loswerden müssen, müssen Sie ein weiteres Mapping ohne status Feld erstellen und Ihre Daten neu indizieren. Schau dir das an answer.

2

Wenn Sie nur den Mapping-Typ im Statusfeld ändern müssen, können Sie ihn nicht löschen, aber Sie können ihn in einen multi_field-Typ ändern, der das Feld mit mehreren Optionssätzen indiziert.

Alte Daten werden nicht mit dem neuen Feld indiziert, aber vorwärts gerichtete Indexanforderungen werden. In einigen Anwendungsfällen ist es eine anständige Alternative, den Index zu löschen und einen neuen mit einem neuen Mapping zu erstellen.

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

+0

Das OP möchte das Feld "Status" nicht durch ein anderes ersetzen. Daher ist 'multi_field' in diesem Fall nicht nützlich. – bittusarkar

+1

Verstanden. Der Anstoß zum Löschen eines Mappings ist jedoch oft, es durch ein anderes zu ersetzen; 'multi_field' kann diesen Bedarf häufig erfüllen, ohne das gesamte Mapping neu erstellen zu müssen. –