2017-08-25 14 views
0

私は、 'document'タイプのインデックスを持っています。これには、名前が 'date'であり、項目の形式が「MMM dd、yyyy hh:mm:ss a」のタイプstringのフィールドがあります。Elasticsearch文字列フィールドを現在の日付に変換します

このフィールドのデータ型を文字列から日付に変換することはできませんが、これは直接できません。 これで、 '日付'と書式の新しいフィールド 'posted'を追加するようにマッピングを変更しました。日付オブジェクトから日付フィールドに変更した後、投稿フィールドに値をコピーする必要があります。私は、次の更新クエリ

POST /my-index/document/_update_by_query 
{ 
    "query" : { 
     "match_all" : {} 
    }, 
    "script": "ctx._source['posted'] = new Date().parse(\"MMM dd, yyyy hh:mm:ss a\",ctx._source['date'])" 
} 

しかし、それは私にこのエラーを与え、私は間違って

java.lang.String cannot be cast to java.util.Map 

をつもりを試してみましたか?

答えて

0

スクリプトにDateタイプを作成する必要はありません。値をpostedフィールドに割り当てるだけで、インデックス操作が実行されたときにElasticsearchが残りを行います。

あなたはまた、あなたのスクリプト

"script": { 
    "inline": "ctx._source['posted'] = ctx._source.foo" 
} 
+0

「スクリプト」の構造に変更する必要があります:「ctx._source [ 『投稿』] = ctx._source [ 『日付』]」それでも私に同じエラーを与え –

+0

スクリプトを修正しました – alr

+0

"スクリプト": "ctx._source ['posted'] = ctx._source.date"はまだ同じエラーを出しました –

関連する問題