2016-09-07 3 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.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" 
     } 
    } 
    } 
} 

나는 그것이 도움이되기를 바랍니다.