2013-04-30 20 views
27

ElasticSearchのドキュメントでは、これを行う方法が不明です。elasticsearchでフィールドタイプを更新する方法

いくつかのつぶやきをインデックス付けし、created_atというフィールドの1つを日付ではなく文字列としてインデックス付けしました。この変更をカールコールで再インデックスする方法を見つけることができません。再索引付けが複雑なプロセスである場合は、そこにあるものを削除してやり直すことになります。しかし、フィールド型を指定する方法もわかりません!

ご協力いただきまして誠にありがとうございます。

答えて

23

あなたは次のように定義することができPut Mapping AP I.

$ curl -XPUT 'http://localhost:9200/twitter/tweet/_mapping' -d ' 
{ 
    "tweet" : { 
     "properties" : { 
      "message" : {"type" : "string", "store" : "yes"} 
     } 
    } 
} 
' 

日付を使用してマッピングを定義する必要があります。また、あなたは挿入されている場合だけ入力しない形式を指定する必要が

{ 
    "tweet" : { 
     "properties" : { 
      "user" : {"type" : "string", "index" : "not_analyzed"}, 
      "message" : {"type" : "string", "null_value" : "na"}, 
      "postDate" : {"type" : "date"}, 
      "priority" : {"type" : "integer"}, 
      "rank" : {"type" : "float"} 
     } 
    } 
} 
+0

うんのようにする必要があります。ありがとうございます。 – maximus

+0

@dadoonet "message"ファイルタイプの変更を文字列から "long"に変更する方法.Mergeは失敗しました。異なるタイプのマッパー[message]、current_type [string] – Dibish

+1

@dibishいいえ、再インデックスする必要があります。 – dadoonet

8

mysqlのタイムスタンプを使用すると、このようなフォーマットを追加するだけです。

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

私たちはあなたの例を考えると、それはそれはそれだ、

"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"} 
    } 
} 
関連する問題