Ошибка с JDBC-река
Я пытаюсь загрузить данные в asticsearch с помощью jdbc-river, и я получаю эту ошибку. Может кто-нибудь сказать мне, что происходит?
org.elasticsearch.index.mapper.MapperParsingException: object mapping for [foo] tried to parse as object, but got EOF, has a concrete value been provided to it?
at org.elasticsearch.index.mapper.object.ObjectMapper.parse(ObjectMapper.java:467)
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.prepareCreate(InternalIndexShard.java:371)
at org.elasticsearch.action.bulk.TransportShardBulkAction.shardIndexOperation(TransportShardBulkAction.java:400)
at org.elasticsearch.action.bulk.TransportShardBulkAction.shardOperationOnPrimary(TransportShardBulkAction.java:153)
at org.elasticsearch.action.support.replication.TransportShardReplicationOperationAction$AsyncShardOperationAction.performOnPrimary(TransportShardReplicationOperationAction.java:556)
at org.elasticsearch.action.support.replication.TransportShardReplicationOperationAction$AsyncShardOperationAction$1.run(TransportShardReplicationOperationAction.java:426)
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:744)
[2014-03-19 22:06:06,672][INFO ][org.xbib.elasticsearch.river.jdbc.strategy.simple.SimpleRiverMouth] bulk [11790] success [100 items] [15ms]
Вот определение реки:
curl -XPUT 'localhost:9200/_river/my_river/_meta' -d '{
"type" : "jdbc"
, "jdbc" : {
"url": "jdbc:postgresql://domainname.com:5432/myapp"
, "user": "user"
, "password": "passwd"
, "sql": "select * from foo"
, "index": "myapp"
, "type": "foo"
}
}'
Эластичного поиска пока нет. Возможно, это проблема. Насколько я понимаю, он отображается автоматически, но я готов добавить любое отображение, если это необходимо.
Схема таблицы postgres ("тип данных", "is_nullable"):
"integer";"YES"
"boolean";"NO"
"boolean";"YES"
"character varying";"NO"
"timestamp with time zone";"YES"
"text";"YES"
"boolean";"NO"
"integer";"YES"
"integer";"YES"
"numeric";"YES"
"text";"YES"
"integer";"YES"
"numeric";"YES"
"numeric";"YES"
"numeric";"YES"
"character varying";"YES"
"character varying";"YES"
"date";"YES"
"numeric";"YES"
"numeric";"YES"
"numeric";"YES"
"character varying";"YES"
"character varying";"YES"
"character varying";"YES"
"character varying";"YES"
"boolean";"YES"
"integer";"YES"
"character varying";"YES"
"timestamp with time zone";"NO"
"timestamp with time zone";"NO"
"boolean";"YES"
"integer";"YES"
"character varying";"YES"
"numeric";"YES"
"integer";"YES"
"character varying";"YES"
"character varying";"YES"
"integer";"YES"
"integer";"NO"
"integer";"NO"
1 ответ
Я закончил тем, что не использовал реку. Я использовал API эластичного поиска через клиент Python для публикации документов на сервере эластичного поиска с сервера приложений (наше приложение - Python). Это хорошо работает. Я использовал многопроцессорные функции python для улучшения времени загрузки с 20 процессами. Он загружает около 28 000 документов за пару минут.
Надеюсь, это поможет!