2015-11-04 21 views
5

Quando si tenta di avviare il nodo principale del mio gruppo, subito dopo l'aggiornamento 1,5-2,0 (sì, è un grande salto), ottengo questo log degli errori:elasticsearch - Mappatura dei conflitti errore l'aggiornamento 1,5-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]]] 

Purtroppo, non ho la descrizione dettagliata del campo o la configurazione analizzatore rilevante per il campo, ma come dice il nome, si tratta di un timestamp da logstash, quindi dovrebbe apparire come uno di loro:

  • "gg/MMM/aaaa: HH: mm: ss Z"
  • "AAAA-MM-dd HH: mm: ss"
  • "HH: mm: ss"
  • "AAAA-MM-dd HH: mm: ss, SSS ZZ"
  • "AAAA-MM-dd HH: mm: ss, SSSZZ"
  • "AAAA-mM-dd HH: mm: ss, SSS"

il registro si conclude con questa:

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

e il nodo si spegne.

Ho letto attentamente i numeri #13169 e #13345, ma nessuno di questi mi ha aiutato, il nodo continua a non riuscire a iniziare.

so che changing the mappings è facile quando ES è attivo, ma sono un po 'bloccato qui.

Qualche idea?

risposta

5

da un dev elasticsearch, sembra che un problema nella mia dei dati, e non in ES sé: https://github.com/elastic/elasticsearch/issues/14491

l'indice logstash-2015/10/18 ha un campo timestamp che viene mappato come una stringa su un tipo e una data su un altro tipo, che è qualcosa che elasticsearch non è in grado di affrontare. In elasticsearch 1.x questo problema sarebbe silenzioso e si verificherà solo quando si tenta di cercare/ordinare/aggregare su un campo durante la ricerca . In Elasticsearch 2.0, rileviamo queste incoerenze in modo più proattivo.

La risposta definitiva è qui: https://www.elastic.co/blog/great-mapping-refactoring

Non sarà in grado di aggiornare gli indici con il campo in conflitto mappature per elasticsearch v2.0.

Se non è più necessario i dati in questi indici, allora si può semplicemente eliminare gli indici, in caso contrario è necessario reindicizzare i tuoi dati con mapping corretti.

Questo strumento può aiutare a estrarre i dati e reimportarla: https://github.com/taskrabbit/elasticsearch-dump

+0

Si tratta di uno strumento necessario: https://github.com/elastic/elasticsearch-migration – chilladx