Comment mettre à jour un type de champ dans elasticsearch
Les documents ElasticSearch ne sont tout simplement pas clairs sur la façon de le faire.
J'ai indexé certains tweets, et l'un des champs, created_at, indexé sous forme de chaîne au lieu d'une date. Je ne trouve pas comment réindexer avec ce changement via un appel curl. Si la réindexation est un processus compliqué, alors je préférerais simplement supprimer ce qui est là et recommencer. Mais, je ne trouve pas non plus comment spécifier les types de champs!
Toute aide est grandement appréciée.
2 réponses
Vous devez définir un mappage en utilisant Put Mapping AP I.
curl -XPUT 'http://localhost:9200/twitter/_doc/_mapping' -H 'Content-Type: application/json' -d '
{
"_doc" : {
"properties" : {
"message" : {"type" : "text", "store" : true}
}
}
}
'
Une date peut être définie comme suit:
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"}
}
}
}
'
Vous devez également spécifier le format et non seulement le type si vous insérez un horodatage mysql, vous devez simplement ajouter un format comme ceci.
"properties": {
"updated_at": {
"type": "date",
"format": "yyyy-MM-dd HH:mm:ss"
}
}
Si nous considérons votre exemple, alors il devrait être comme
"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"}
}
}