it-swarm.com.de

So aktualisieren Sie einen Feldtyp in Elasticsearch

Die ElasticSearch-Dokumente sind nur unklar, wie das geht. 

Ich habe einige Tweets indiziert, und eines der Felder, created_at, wurde als Zeichenfolge anstelle eines Datums indiziert. Ich kann nicht finden, wie ich diese Änderung durch einen Curl-Aufruf neu indizieren kann. Wenn das Neuindizieren ein komplizierter Prozess ist, würde ich viel lieber löschen, was da ist, und von vorne anfangen. Ich kann aber auch nicht finden, wie die Feldtypen angegeben werden! 

Jede Hilfe wird sehr geschätzt.

30
maximus

Sie müssen ein Mapping mit Put Mapping AP I definieren.

curl -XPUT 'http://localhost:9200/Twitter/_doc/_mapping' -H 'Content-Type: application/json'  -d '
{
    "_doc" : {
        "properties" : {
            "message" : {"type" : "text", "store" : true}
        }
    }
}
'

Ein Datum kann wie folgt definiert werden:

curl -XPUT 'http://localhost:9200/Twitter/_doc/_mapping' -H 'Content-Type: application/json'  -d '
{
    "_doc" : {
        "properties" : {
            "user" : {"type" : "keyword", "null_value" : "na"},
            "message" : {"type" : "text"},
            "postDate" : {"type" : "date"},
            "priority" : {"type" : "integer"},
            "rank" : {"type" : "float"}
        }
    }
}
'
27
dadoonet

Sie müssen auch angeben, dass nicht nur das Format eingegeben wird, wenn Sie einen mysql-Zeitstempel einfügen.

"properties": {
    "updated_at": {
         "type": "date",
         "format": "yyyy-MM-dd HH:mm:ss"
     }
 }

Wenn wir Ihr Beispiel betrachten, dann sollte es so sein 

"Tweet" : {
    "properties" : {
        "user" : {"type" : "string", "index" : "not_analyzed"},
        "message" : {"type" : "string", "null_value" : "na"},
        "postDate" : {"type" : "date" , "format": "yyyy-MM-dd HH:mm:ss" },
        "priority" : {"type" : "integer"},
        "rank" : {"type" : "float"}
    }
} 
9
Jawad

Aktualisieren eines Feldtyps im vorhandenen Index:

PUT test-index/doc/_mapping
{
    "doc" : {
        "properties" : {
            "testDateField" : {"type" : "date"}
        }
    }
}

Hinzufügen eines Feldes mit einem bestimmten Typ im vorhandenen Index:

PUT test-index
{
  "mappings": {
    "doc": {
      "properties": {
        "testDateField" : {
          "type": "date"
        }
      }
    }
  }
}
0
Jaya Krishna