web-dev-qa-db-ja.com

エラスティック検索でフィールドマッピングを削除する方法

次のマッピングのインデックスがあります

{
   "testmap": {
      "mappings": {
         "user": {
            "properties": {
               "plans": {
                  "type": "nested",
                  "properties": {
                     "user": {
                        "type": "long"
                     }
                  }
               },
               "status": {
                  "type": "integer"
               }
            }
         }
      }
   }
}

ステータスフィールドのマッピングを削除したい。そのフィールドのデータを失ってもかまいません。ステータスフィールドを削除するオプションはありますか? 試してみました

curl -XDELETE http://192.168.2.2:9200/testmap/user/status
{"found":false,"_index":"testmap","_type":"user","_id":"status","_version":1

あなたの助けは大歓迎です。ありがとうございました。

9
Dibish

このマッピングからstatusフィールドを削除することはできません。このフィールドを本当に削除する必要がある場合は、statusフィールドなしで別のマッピングを作成し、データのインデックスを再作成する必要があります。これを見てください answer

8
bittusarkar

ステータスフィールドのマッピングタイプを変更するだけでよい場合は、削除できませんが、multi_fieldタイプに変更して、複数のオプションセットでフィールドにインデックスを付けることができます。

古いデータは新しいフィールドに索引付けされませんが、前方に進む索引要求は索引付けされます。一部のユースケースでは、「インデックスを削除して、新しいマッピングで新しいインデックスを作成する」ための適切な代替手段です。

https://www.elasticsearch.org/guide/en/elasticsearch/reference/0.90/mapping-multi-field-type.html

3
Chris Heald