2015-11-04 13 views
5

Podczas próby uruchomienia węzła głównego w moim klastrze, zaraz po uaktualnieniu z wersji 1.5 do 2.0 (tak, to duży skok), pojawia się następujący dziennik błędów:Elasticsearch - Odwzorowywanie błędów konfliktu mapowania z wersji 1.5 na 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]]] 

Niestety, nie mam szczegółowego opisu pola lub odpowiedniej konfiguracji analizatora na polu, ale jak jego nazwa wskazuje, jest to datownik z logstash, więc powinno to wyglądać jak jedna z nich:

  • "dd/MMM/rrrr: 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"

dziennik kończy się w ten sposób:

[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) 

a węzłem wyłączy.

Mam dokładnie przeczytać problemy #13169 i #13345, ale nic z tych nie pomógł mi, węzeł nadal nie może rozpocząć.

Wiem, że changing the mappings jest łatwe, gdy ES jest podniesione, ale utknąłem tutaj.

Każdy pomysł?

Odpowiedz

5

z dev Elasticsearch, wygląda problem w moich danych, a nie w samej ES: https://github.com/elastic/elasticsearch/issues/14491

Twój wskaźnik logstash-18.10.2015 ma pole datownika, który jest odwzorowany jak na sznurku jeden typ i jako data na innym typie, który jest czymś, z czym nie może sobie poradzić elastyczna wyszukiwarka. W module elasticssearch 1.x problem ten byłby cichy i powodował wyłączenie podczas próby wyszukiwania/sortowania/agregacji na polu. W Elasticsearch 2.0 wykryjemy te niespójności bardziej proaktywnie.

Ostateczna odpowiedź jest tutaj: https://www.elastic.co/blog/great-mapping-refactoring

Nie będą mogli uaktualnić indeksy sprzecznych dziedzinie mapowania do Elasticsearch v2.0.

Jeśli dane w tych indeksach nie są już potrzebne, można po prostu usunąć indeksy, w przeciwnym razie konieczne będzie ponowne zindeksowanie danych za pomocą poprawnych odwzorowań .

To narzędzie może pomóc wyodrębnić dane i zaimportuj go: https://github.com/taskrabbit/elasticsearch-dump

+0

Jest to narzędzie musi posiadać: https://github.com/elastic/elasticsearch-migration – chilladx

Powiązane problemy