jprante / elasticsearch-jdbc

JDBC importer for Elasticsearch
Apache License 2.0
2.84k stars 710 forks source link

Error: Failed to load settings AND Unrecognized character escape 'i' (code 105) #708

Open mo7och opened 8 years ago

mo7och commented 8 years ago

Hi guys,

I am trying to move data from MySQL into ES, and i don't understand what is wrong. Help me please.

This is mysql.sh conf:

#!/bin/sh

bin=/opt/elasticsearch-jdbc-1.5.2.0/bin
lib=/opt/elasticsearch-jdbc-1.5.2.0/lib

echo '
{
   "type" : "jdbc",
    "jdbc" : {
        "url" : "jdbc:mysql://host/db",
        "user" : "user",
        "password" : "password",
        "sql" : "mysql.sql",
        "treat_binary_as_string" : true,
        "elasticsearch" : {
            "host" : "localhost",
            "port" : 9300
        },
        "max_bulk_actions" : 20000,
        "max_concurrent_bulk_requests" : 10,
        "index" : "index"
      }
}
' | java \
    -cp "${lib}/*" \
    -Dlog4j.configurationFile=${bin}/log4j2.xml \
    org.xbib.tools.Runner \
    org.xbib.tools.JDBCImporter

And this is output after script execution:

root@host:/# /opt/elasticsearch-jdbc-1.5.2.0/bin/mysql.sh
org.elasticsearch.common.settings.SettingsException: Failed to load settings from [args]
        at org.elasticsearch.common.settings.ImmutableSettings$Builder.loadFromStream(ImmutableSettings.java:985)
        at org.xbib.tools.Converter.reader(Converter.java:70)
        at org.xbib.tools.Converter.reader(Converter.java:48)
        at org.xbib.tools.Runner.main(Runner.java:28)
Caused by: org.elasticsearch.common.jackson.core.JsonParseException: Unrecognized character escape 'i' (code 105)
 at [Source:
{
    "type" : "jdbc",
    "jdbc" : {
        "url" : "jdbc:mysql://host/db",
        "user" : "user",
        "password" : "password",
        "sql" : "mysql.sql",
        "treat_binary_as_string" : true,
        "elasticsearch" : {
            "host" : "localhost",
            "port" : 9300
        },
        "max_bulk_actions" : 20000,
        "max_concurrent_bulk_requests" : 10,
        "index" : "index"
      }
}

; line: 6, column: 27]
        at org.elasticsearch.common.jackson.core.JsonParser._constructError(JsonParser.java:1419)
        at org.elasticsearch.common.jackson.core.base.ParserMinimalBase._reportError(ParserMinimalBase.java:508)
        at org.elasticsearch.common.jackson.core.base.ParserMinimalBase._handleUnrecognizedCharacterEscape(ParserMinimalBase.java:485)
        at org.elasticsearch.common.jackson.core.json.ReaderBasedJsonParser._decodeEscaped(ReaderBasedJsonParser.java:2046)
        at org.elasticsearch.common.jackson.core.json.ReaderBasedJsonParser._finishString2(ReaderBasedJsonParser.java:1611)
        at org.elasticsearch.common.jackson.core.json.ReaderBasedJsonParser._finishString(ReaderBasedJsonParser.java:1585)
        at org.elasticsearch.common.jackson.core.json.ReaderBasedJsonParser.getText(ReaderBasedJsonParser.java:233)
        at org.elasticsearch.common.xcontent.json.JsonXContentParser.text(JsonXContentParser.java:86)
        at org.elasticsearch.common.settings.loader.XContentSettingsLoader.serializeValue(XContentSettingsLoader.java:122)
        at org.elasticsearch.common.settings.loader.XContentSettingsLoader.serializeObject(XContentSettingsLoader.java:88)
        at org.elasticsearch.common.settings.loader.XContentSettingsLoader.serializeObject(XContentSettingsLoader.java:80)
        at org.elasticsearch.common.settings.loader.XContentSettingsLoader.load(XContentSettingsLoader.java:67)
        at org.elasticsearch.common.settings.loader.XContentSettingsLoader.load(XContentSettingsLoader.java:45)
        at org.elasticsearch.common.settings.ImmutableSettings$Builder.loadFromStream(ImmutableSettings.java:982)
        ... 3 more

Does anybody have an idea?

jprante commented 8 years ago

In the password you use \\i but to use escape, you should use \\\\i instead.

mo7och commented 8 years ago

Thank you, this issue is fixed.