2015-11-04 14 views
5

Khi cố gắng khởi động nút chính của cụm, ngay sau khi nâng cấp từ 1,5 lên 2.0 (vâng, đó là bước nhảy lớn), tôi nhận được nhật ký lỗi này:Elasticsearch - Sửa lỗi bản đồ xung đột nâng cấp từ 1,5 lên 2.0

[2015-11-03 18:15:10,948][ERROR][gateway     ] [mon-01] failed to read local state, exiting... 
java.lang.IllegalStateException: unable to upgrade the mappings for the index [logstash-2015.10.18], reason: [Mapper for [timestamp] conflicts with existing mapping in other types: 
[mapper [timestamp] cannot be changed from type [date] to [string]]] 

thật không may, tôi không có mô tả chi tiết về các lĩnh vực hoặc cấu hình phân tích có liên quan đối với lĩnh vực này, nhưng như tiểu bang tên gọi của nó, đó là một dấu thời gian từ logstash, vì vậy nó sẽ giống như một trong những:

  • "dd/MMM/yyyy: HH: mm: ss Z"
  • "YYYY-MM-dd HH: mm: ss"
  • "HH: mm: ss"
  • "YYYY-MM-dd HH: mm: ss, SSS ZZ"
  • "YYYY-MM-dd HH: mm: ss, SSSZZ"
  • "YYYY-mM-dd HH: mm: ss, SSS"

Nhật ký chấm dứt với điều này:

[2015-11-03 18:15:11,383][ERROR][bootstrap    ] Guice Exception: java.lang.IllegalStateException: unable to upgrade the mappings for the index [logstash-2015.10.18], reason: [Mapper for [timestamp] conflicts with existing mapping in other types: 
[mapper [timestamp] cannot be changed from type [date] to [string]]] 
Likely root cause: java.lang.IllegalArgumentException: Mapper for [timestamp] conflicts with existing mapping in other types: 
[mapper [timestamp] cannot be changed from type [date] to [string]] 
    at org.elasticsearch.index.mapper.FieldTypeLookup.checkCompatibility(FieldTypeLookup.java:117) 
    at org.elasticsearch.index.mapper.MapperService.checkNewMappersCompatibility(MapperService.java:345) 
    at org.elasticsearch.index.mapper.MapperService.merge(MapperService.java:296) 
    at org.elasticsearch.index.mapper.MapperService.merge(MapperService.java:242) 
    at org.elasticsearch.cluster.metadata.MetaDataIndexUpgradeService.checkMappingsCompatibility(MetaDataIndexUpgradeService.java:329) 
    at org.elasticsearch.cluster.metadata.MetaDataIndexUpgradeService.upgradeIndexMetaData(MetaDataIndexUpgradeService.java:112) 
    at org.elasticsearch.gateway.GatewayMetaState.pre20Upgrade(GatewayMetaState.java:226) 
    at org.elasticsearch.gateway.GatewayMetaState.<init>(GatewayMetaState.java:85) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526) 
    at <<<guice>>> 
    at org.elasticsearch.node.Node.<init>(Node.java:198) 
    at org.elasticsearch.node.NodeBuilder.build(NodeBuilder.java:145) 
    at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:170) 
    at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:270) 
    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:35) 

Và nút tắt. .

Tôi đã đọc kỹ các vấn đề #13169#13345, nhưng không có vấn đề nào trong số này giúp tôi, nút không tiếp tục bắt đầu.

tôi biết rằng changing the mappings thật dễ dàng khi ES lên, nhưng tôi bị kẹt ở đây.

Bất kỳ ý tưởng nào?

Trả lời

5

từ một dev Elasticsearch, nó trông giống như một vấn đề trong dữ liệu của tôi, và không có trong ES bản thân: https://github.com/elastic/elasticsearch/issues/14491

index logstash-2015/10/18 bạn có một trường timestamp được ánh xạ như là một chuỗi trên một loại và là ngày tháng trên một loại khác, là thứ mà elasticsearch không thể đối phó. Trong elasticsearch 1.x vấn đề này sẽ là im lặng và chỉ chuyến đi khi cố gắng để tìm kiếm/sắp xếp/tổng hợp trên một trường. Trong Elasticsearch 2.0, chúng tôi phát hiện những mâu thuẫn này chủ động hơn.

Câu trả lời dứt khoát là ở đây: https://www.elastic.co/blog/great-mapping-refactoring

Bạn sẽ không thể nâng cấp chỉ số với lĩnh vực mâu thuẫn ánh xạ để Elasticsearch v2.0.

Nếu dữ liệu trong các chỉ mục này không còn cần thiết, thì bạn có thể chỉ cần xóa các chỉ mục, nếu không bạn sẽ cần phải kết nối lại dữ liệu của mình với ánh xạ chính xác.

Công cụ này có thể giúp để trích xuất dữ liệu và tái nhập khẩu nó: https://github.com/taskrabbit/elasticsearch-dump

+0

Đây là một công cụ phải có: https://github.com/elastic/elasticsearch-migration – chilladx

Các vấn đề liên quan