2016-06-30 3 views
0

Ich benutze ES2.3Wie erstellt man ein Mapping mit JSON-Datei in elasticsearch2.3?

erstellen Sie neue Index Mapping mit unten Befehl funktioniert.

curl -XPUT 'http://localhost:9200/megacorp' -d ' 
{ 
    "settings": { 
     "number_of_shards": 3, 
     "number_of_replicas": 1 
    }, 
    "mappings": { 
     "employee": { 
      "properties": { 
       "first_name": { 
        "type": "string" 
       }, 
       "last_name": { 
        "type": "string" 
       }, 
       "age": { 
        "type": "integer" 
       }, 
       "about": { 
        "type": "string" 
       }, 
       "interests": { 
        "type": "string" 
       }, 
       "join_time": { 
        "type": "date", 
        "format": "dateOptionalTime", 
        "index": "not_analyzed" 
       } 
      } 
     } 
    } 
} 
' 

jetzt hoffe ich kann eine json-Datei verwenden, um den gleichen Index zu erstellen. tmap.json Datei wie unten

{ 
    "settings": { 
     "number_of_shards": 3, 
     "number_of_replicas": 1 
    }, 
    "mappings": { 
     "employee": { 
      "properties": { 
       "first_name": { 
        "type": "string" 
       }, 
       "last_name": { 
        "type": "string" 
       }, 
       "age": { 
        "type": "integer" 
       }, 
       "about": { 
        "type": "string" 
       }, 
       "interests": { 
        "type": "string" 
       }, 
       "join_time": { 
        "type": "date", 
        "format": "dateOptionalTime", 
        "index": "not_analyzed" 
       } 
      } 
     } 
    }, 
    "aliases": [ "source" ] 
    } 

dann ich usr curl, um es zu erstellen.

curl -s -XPOST 'localhost:9200/megacorp' --data-binary @tmap.json 

und

curl -XPUT 'http://localhost:9200/megacorp' -d @tmap.json 

beide oben genannten Befehle nicht funktioniert, erhalten Fehler wie unten.

{"error":{"root_cause":[{"type":"class_cast_exception","reason":"java.util.ArrayList cannot be cast to java.util.Map"}],"type":"class_cast_exception","reason":"java.util.ArrayList cannot be cast to java.util.Map"},"status":500}% 

Wie erstellt Index mit Curl und meine JSON-Datei? Das verwirrt mich wirklich lange.

kann mir irgendein Körper helfen? Vielen Dank.

Antwort

1

Die Art, wie Sie den Aliasnamen definieren, ist falsch. Es sollte eine Karte anstelle eines Arrays sein.

{ 
    "settings": { 
     "number_of_shards": 3, 
     "number_of_replicas": 1 
    }, 
    "mappings": { 
     "employee": { 
      "properties": { 
       "first_name": { 
        "type": "string" 
       }, 
       "last_name": { 
        "type": "string" 
       }, 
       "age": { 
        "type": "integer" 
       }, 
       "about": { 
        "type": "string" 
       }, 
       "interests": { 
        "type": "string" 
       }, 
       "join_time": { 
        "type": "date", 
        "format": "dateOptionalTime", 
        "index": "not_analyzed" 
       } 
      } 
     } 
    }, 
    "aliases": { "source": {} } 
    } 

Weitere Informationen über Aliase in der Indexerstellung: https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-create-index.html#create-index-aliases

+0

ich habe es, vielen Dank. andere Frage, wie zu Speichervorlagendatei in Config/Vorlagen-Ordner, wissen Sie es? – user670809

+0

Ich verstehe deine Frage nicht. Was meinst du mit Vorlagendatei? Ich glaube nicht, dass Elasticsearch etwas namens Template-Datei hat. – philipskokoh

+0

danke für Ihre Hilfe. Ich fand es von ES Version 2.0 oder neuer wird nicht unterstützt für Vorlage Dateien Speicher in der lokalen Datei, müssen Sie verwenden curl -XPUT localhost: 9200/_template/xxx -d '{}' für Ihre Vorlage. andere Willen wäre möglich, Sie speichern es auf lokalen Ordner dann führen Sie Befehl von Handle, wie curl -XPUT localhost: 9200/_template/xxx-d @templatefile – user670809

Verwandte Themen