2012-10-19 11 views
5

Sto cercando di indicizzare i record mysql in elasticsearch utilizzando lo jprante's elasticsearch jdbc river. Ho appena notato che il valore nel campo della data viene modificato nell'indice.jprante elasticsearch jdbc river che modifica il valore della data

Mapping:

content_date:{ 
    "type":"date" 
} 

content_date campo per un record in MySQL ->2012-10-06 02:11:30

dopo l'esecuzione del fiume JDBC ....

content_date campo per lo stesso record nel elasticsearch - >2012-10-05T20:41:30Z

Fiume:

curl -XPUT 'localhost:9200/_riv_index/_riv_type/_meta' -d '{ 
    "type" : "jdbc", 
    "jdbc" : { 
     "driver" : "com.mysql.jdbc.Driver", 
     "url" : "jdbc:mysql://localhost:3306/db", 
     "user" : "user", 
     "password" : "password", 
     "sql" : "select * from table where id=2409", 
     "poll" : "1d", 
     "versioning" : false 
    }, 
    "index" : { 
     "index" : "myindex", 
     "type" : "mytype" 
    } 
}' 

La modifica del formato data è accettabile, ma perché il valore della data viene modificato? Il river aggiunge la differenza di tempo dell'UTC alla data del record mysql e lo salva in elasticsearch. Come posso interrompere questa conversione temporale?

+0

Ancora in corso, come hai risolto? – tostasqb

+0

Sono alle prese con lo stesso problema ... Qualcuno come risolverlo http://serverfault.com/questions/674399/elasticsearch-river-jdbc-inserting-duplicate-record-in-mysql-db/674681#674681 –

risposta

0

Dal elasticsearch POV, ecco cosa ha detto docs:

Il tipo di data è un tipo speciale che le mappe di tipo stringa JSON. Segue un formato specifico che può essere impostato in modo esplicito. Tutte le date sono UTC. Internamente, una data si associa a un tipo numerico lungo, con lo stadio di analisi aggiunto da stringa a lunga e da lunga a stringa.

Non sicuro di poterlo modificare.

0

soluzione per questo problema è quello di utilizzare fuso orario nel blocco JDBC

"timezone" : "TimeZone.getDefault()" 

Anche io sto data e dell'orario estivo a campo distinto in MySQL DB

| date | date | YES | | NULL | | 
| time | time | YES | | NULL | | 

elasticsearch utilizza Joda timeformat per salvare la data. Quindi sta convertendo automaticamente la mia data in data/ora.

Nel campo della data, poiché non ho tempo, aggiunge automaticamente zero allo stesso.

Da quando ho bisogno di visualizzare i dati tramite Kibana che il motivo per cui ho bisogno di questo split..I convertito formato della data e l'ora come varchar (20) come una soluzione (cattiva idea lo so) e il suo lavoro bene ora ..

Problemi correlati