2016-10-21 2 views
0

Ich möchte den Typ eines Feldes von 'String' zu 'Datum' (Format: 'epoch_second', um spezifisch zu sein). Da es keine Möglichkeit gibt, die Zuordnungen eines vorhandenen Index zu aktualisieren, muss ich einen neuen Index erstellen, für den ich hauptsächlich das Mapping aus meinem vorhandenen Index verwenden möchte. Hier ist, was ich verwende:Elasticsearch Update-Mapping mit JSON

curl -XGET 'http://localhost:9200/sam/saga/_mapping?pretty> saga.json

die Abbildung des aktuellen Index in eine JSON-Datei auszugeben, deren Inhalt, ist dies:

{ 
    "sam" : { 
    "mappings" : { 
     "saga" : { 
     "properties" : { 
      "name" : { 
      "type" : "long" 
      } 
     } 
     } 
    } 
    } 
} 

dann ersetze ich

  "name" : { 
      "type" : "long" 
     } 

mit

  "name" : { 
      "type" : "date" 
     } 

und speichern Sie die neue Datei als saga2.json. dann diese laufen

curl -XPUT 'http://localhost:9200/sam/_mapping/saga2' -d @ saga2.json

Allerdings, wenn ich die Abbildung des neuen Index zu überprüfen, alle Typen haben sich nun geändert zu "string".

Ich habe sogar dieses Problem mit dem Beispiel Elasticsearch.

Weiß jemand, was falsch ist?

+0

ich fand heraus, dass die Art r Format eines Feldes ändert sich nicht innerhalb des gleichen Index für verschiedene Dokumente nicht funktioniert. die Lösung einen neuen Index zu machen wäre und geben ihm die korrekte Zuordnung von 1. PUT/NEW_INDEX (mach ein Index __without__ Zuordnung) 2. PUT/new_index/_mapping/new_doc -d @new_mapping und dann alle Daten aus dem alten Index auf den neuen und dump alle meine neue Zuordnung – Acalypha

Antwort

0

Sie benötigen eine weitere Änderung in Ihrer saga2.json Datei zu machen, nämlich den Mapping-Typ Name saga ->saga2 (Jetzt müssen Sie wahrscheinlich alles zu saga3

{ 
    "sam" : { 
    "mappings" : { 
     "saga2" : {     <--- here 
     "properties" : { 
      "name" : { 
      "type" : "date"  <--- and here 
      } 
     } 
     } 
    } 
    } 
} 

Dann können Sie diese nur umbenennen auszuführen:

curl -XPUT 'http://localhost:9200/sam/_mapping/saga2' -d @saga2.json 
+0

ein Glück damit? – Val

Verwandte Themen