2016-09-07 5 views
0

1.4から2.Xリリースまでの私のエラスティックサーチサーバーのアップデートを準備中です。 提供ツール(https://github.com/elastic/elasticsearch-migration/tree/1.x)で移行を準備しましたが、マッピングの競合があります。エラスティック1.4から2.xへの移行

競合フィールドマッピング:

$ curl -XGET /_mapping/nginx_access/field/timestamp?pretty { "timestamp" : { "full_name" : "timestamp", "mapping":{"timestamp":{"type":"string","norms":{"enabled":false},"fields":{"raw":{"type":"string","index":"not_analyzed","ignore_above":256}}}} } }

$ curl -XGET /_mapping/nginx_error/field/timestamp?pretty { "timestamp" : { "full_name" : "timestamp", "mapping":{"timestamp":{"type":"date","format":"yyyy/MM/dd HH:mm:ss||yyyy/MM/dd"}} } }

は私がマッピングタイプを変更することはできません理解して、私のことを行う必要があります Mapping for field nginx_access:timestamp conflicts with: nginx_error:timestamp. Check parameters: format, norms.enabled, type

は事実上、フォーマットが異なっています新しいマッピングでインデックスを再作成します。しかし、それはのLogstashです(動的に?)マッピングを作成していますが、そのために私の側には設定がありません。 インデックスを複製し、インデックスを取得する前にただちに1つのマッピングタイプを変更することはできますか?私は実際にどのように実際には見ません。インデックスを再作成するのはかなり複雑です(ほかの多くのマッピングでは、そこに他の多くのドキュメントタイプがあります)。

古いインデックスを一度更新したいと思います。すべてのタイムスタンプが同じタイプであることをお勧めします。

最も簡単なソリューションは何ですか?これを自動的に行うプラグインはありますか? (1.4版用)

ありがとう!

答えて

0

マッピングはLogstashで作成されないため、ドキュメントを受け取ったときにElasticsearchによって動的に(フィールドの内容に応じて)作成されます。
既存のマッピングを更新することはできません。新しいインデックスを作成する必要があります。また、インデックスを再作成するときは、マッピングが同じになるようにタイムスタンプが同じタイプであることを確認する必要があります。

インデックスを作成するときにIndex patternを指定すると、Elasticsearchがインデックスを作成するときに使用されます。このパターンでは、動的に生成したくないマッピングを指定できます。あなたのものは次のようになります:

{ 
    "nginx": { 
    "template": "nginx_*", 
    "mappings": { 
     "created_at": { 
     "type": "date", 
     "format": "yyyy/MM/dd HH:mm:ss||yyyy/MM/dd" 
     } 
    } 
    } 
} 

私はそれが役に立ちそうです。

関連する問題