現在AWS OpenSearch マッピングのデータ型が変更できないので、一時のインデックスを経由で、インデックスを再作成して、インデックスのマッピングのデータ型を変更する。
例:以下のインデックスのfield:test-text
がfloat
からkeyword
に変更する場合、
{
"sample_index" : {
"aliases" : { },
"mappings" : {
"dynamic" : "true",
"_meta" : { },
"dynamic_date_formats" : [ "strict_date_optional_time", "yyyy/MM/dd HH:mm:ss Z||yyyy/MM/dd Z", "basic_date_time" ],
"dynamic_templates" : [ ],
"date_detection" : true,
"numeric_detection" : false,
"properties" : {
"field:test-text" : {
"type" : "float"
}
}
}
}
・ステップ1:一時のインデックス作成
PUT /sample_index_bk
{
"mappings" : {
"properties" : {
"field:test-text" : {
"type" : "keyword"
}
}
}
}
・ステップ2:既存のインデックスのデータを一時インデックスへコピーする
POST _reindex
{
"source":{
"index":"sample_index"
},
"dest":{
"index":"sample_index_bk"
}
}
・ステップ3:既存のインデックスを削除する
DELETE /sample_index
・ステップ4:マッピングを変更したいインデックスを作成する
PUT /sample_index
{
"mappings" : {
"properties" : {
"field:test-text" : {
"type" : "keyword"
}
}
}
}
・ステップ5:ステップ2のように一時インデックスのデータをステップ4に作成したインデックスへコピーする
POST _reindex
{
"source":{
"index":"sample_index_bk"
},
"dest":{
"index":"sample_index"
}
}
・ステップ6:一時インデックスを削除する
DELETE /sample_index_bk