【问题标题】:Jdbc river stops on MapperParsingExceptionJdbc River 在 MapperParsingException 上停止
【发布时间】:2014-08-14 11:30:40
【问题描述】:

我使用的是 Elastic search 版本 1.2.0,Jdbc River 版本 1.2.0.1。

以下是我的 Jdbc River 命令。

curl -XPUT 'localhost:9200/_river/tbl_messages/_meta' -d '{
    "type" : "jdbc",
    "jdbc" : {
    "strategy" : "simple",
    "url" : "jdbc:mysql://localhost:3306/messageDB",
    "user" : "username",
    "password" : "password",
    "sql" : "select messageAlias.id as _id,messageAlias.subject as subject from tbl_messages messageAlias",
    "index" : "MessageDb",
    "type" : "tbl_messages", 
    "maxbulkactions":1000,
    "maxconcurrentbulkactions" : 4,
    "autocommit" : true,
    "schedule" : "0 0-59 0-23 ? * *"    
    }
}'

主题列的索引元数据

subject: {
    type: string
}

此表有 200 万条记录,主题字段包含任意字符串。一些示例数据是“你被邀请了”、“{New York:45} We rock!!”、“{Invitation:27}”等等。

我的问题是,当 jdbc River 遇到一个带有 {anything inside of this} 的此类记录时,它会停止河流并引发解析异常。它永远不会继续索引下一条记录。

org.elasticsearch.index.mapper.MapperParsingException: failed to parse [subject]
at org.elasticsearch.index.mapper.core.AbstractFieldMapper.parse(AbstractFieldMapper.java:418)
at org.elasticsearch.index.mapper.object.ObjectMapper.serializeObject(ObjectMapper.java:537)
at org.elasticsearch.index.mapper.object.ObjectMapper.parse(ObjectMapper.java:479)
at org.elasticsearch.index.mapper.DocumentMapper.parse(DocumentMapper.java:515)
at org.elasticsearch.index.mapper.DocumentMapper.parse(DocumentMapper.java:462)
at org.elasticsearch.index.shard.service.InternalIndexShard.prepareIndex(InternalIndexShard.java:394)
at org.elasticsearch.action.bulk.TransportShardBulkAction.shardIndexOperation(TransportShardBulkAction.java:413)
at org.elasticsearch.action.bulk.TransportShardBulkAction.shardOperationOnPrimary(TransportShardBulkAction.java:155)
at org.elasticsearch.action.support.replication.TransportShardReplicationOperationAction$AsyncShardOperationAction.performOnPrimary(TransportShardReplicationOperationAction.java:534)
at org.elasticsearch.action.support.replication.TransportShardReplicationOperationAction$AsyncShardOperationAction$1.run(TransportShardReplicationOperationAction.java:433)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)

Caused by: org.elasticsearch.ElasticsearchIllegalArgumentException: unknown property [Inivitation]
at org.elasticsearch.index.mapper.core.StringFieldMapper.parseCreateFieldForString(StringFieldMapper.java:332)
at org.elasticsearch.index.mapper.core.StringFieldMapper.parseCreateField(StringFieldMapper.java:278)
at org.elasticsearch.index.mapper.core.AbstractFieldMapper.parse(AbstractFieldMapper.java:408)
... 12 more

删除 db 中的这条记录,清除 ES_HOME/data 中的数据并重新创建河流似乎是唯一的方法,直到它再次遇到上述格式化记录。

在解析少数记录时,如何使其继续索引而不考虑异常?

【问题讨论】:

    标签: mysql jdbc elasticsearch elasticsearch-jdbc-river


    【解决方案1】:
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多