2016-09-30 29 views
0

大きなjsonファイルをアップロードしようとしているうちにMapperParsingExceptionが表示されています。ここで私はelasticsearchから取り戻す完全なエラーです:elasticsearch mapperParsingException一括インポート時

on [[sample][4]] 
MapperParsingException[failed to parse]; nested: IllegalArgumentException[Malformed content, found extra data after parsing: START_OBJECT]; 
    at org.elasticsearch.index.mapper.DocumentParser.parseDocument(DocumentParser.java:156) 
    at org.elasticsearch.index.mapper.DocumentMapper.parse(DocumentMapper.java:309) 
    at org.elasticsearch.index.shard.IndexShard.prepareCreate(IndexShard.java:529) 
    at org.elasticsearch.index.shard.IndexShard.prepareCreateOnPrimary(IndexShard.java:506) 
    at org.elasticsearch.action.index.TransportIndexAction.prepareIndexOperationOnPrimary(TransportIndexAction.java:214) 
    at org.elasticsearch.action.index.TransportIndexAction.executeIndexRequestOnPrimary(TransportIndexAction.java:223) 
    at org.elasticsearch.action.index.TransportIndexAction.shardOperationOnPrimary(TransportIndexAction.java:157) 
    at org.elasticsearch.action.index.TransportIndexAction.shardOperationOnPrimary(TransportIndexAction.java:66) 
    at org.elasticsearch.action.support.replication.TransportReplicationAction$PrimaryPhase.doRun(TransportReplicationAction.java:657) 
    at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:37) 
    at org.elasticsearch.action.support.replication.TransportReplicationAction$PrimaryOperationTransportHandler.messageReceived(TransportReplicationAction.java:287) 
    at org.elasticsearch.action.support.replication.TransportReplicationAction$PrimaryOperationTransportHandler.messageReceived(TransportReplicationAction.java:279) 
    at org.elasticsearch.transport.RequestHandlerRegistry.processMessageReceived(RequestHandlerRegistry.java:77) 
    at org.elasticsearch.transport.TransportService$4.doRun(TransportService.java:376) 
    at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:37) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: java.lang.IllegalArgumentException: Malformed content, found extra data after parsing: START_OBJECT 
    at org.elasticsearch.index.mapper.DocumentParser.parseDocument(DocumentParser.java:141) 
    ... 17 more 

が、私はまさにイムにフィードしようとしているデータが不正である理由をよりよく理解しようとしているが、私はこのような状況では、より良いデバッグに何ができますか?

EDITこれは2億例と大規模な文書であるが、ここでは例のデータポイント {"company":"E-Corp","title":"Sith lord","people":[{"id":"12345","name":"Darth Vader","title":"The Sith Lord"}]}

+0

JSONのスニペットが便利です。 –

+1

@SimonLudwigこのファイルには2億のエントリがあり、すべてのエントリにすべてのデータが記入されているわけではありません。 – TheM00s3

答えて

0

は、すべての奇数行が一意のID列であることを確認している。

{ "index": {}} 

そして、それ偶数行はすべてデータです。

{ "index": {}} 
{"company":"E-Corp","title":"Sith lord","people":[{"id":"12345","name":"Darth Vader","title":"The Sith Lord"}]} 

_bulk、その弾性に追加:

POST /index/type/_bulk 
{ "index": {}} 
{"company":"E-Corp","title":"Sith lord","people":[{"id":"12345","name":"Darth Vader","title":"The Sith Lord"}]} 
{ "index": {}} 
{"company":"E-Corp","title":"Sith lord","people":[{"id":"12345","name":"Darth Vader","title":"The Sith Lord"}]} 
{ "index": {}} 
{"company":"E-Corp","title":"Sith lord","people":[{"id":"12345","name":"Darth Vader","title":"The Sith Lord"}]} 

だけで、エラー・メッセージの原因を推測:あなたのログから, found extra data after parsing: START_OBJECTを。

+0

はい、これはエラーメッセージです。ここで私のインデックスが 'localhost:9200/sample'のように見えるのは、私のcurlステートメントが' curl -XPOST localhost:9200/sample/_bulk --binary-data @ output.json'のように見えるということです。 – TheM00s3

+0

'curl -XPOST http:// server:port/index/type/_bulk --binary-data @ filename.json' – Anuga

0

マッピングを指定していますか? そうでない場合、elasticsearchは最初のドキュメントに基づいてマッピングを作成します。現在、他のドキュメントのいずれかの値がこれらの特定のフィールドにマップされていない場合は、エラーが発生する可能性があります。例えば

https://www.elastic.co/guide/en/elasticsearch/guide/current/custom-dynamic-mapping.html

companyは、おそらく文字列としてマッピングされようとしているが、ドキュメントは、そのフィールドに数値または日付と一緒に来た場合、エラーがスローされる可能性があります。

また、ネストされたドキュメント(人)もあります。これについても調べていきます。いくつかのサンプル文書を取ってみることができますか?最初の10点を挙げて、バルクAPIを使用してインデックスを付けることができるかどうかを確認してください。

また、ドキュメントごとに多くのフィールドがないように、これらのフィールドごとに独自のマッピングを作成することもできます。

関連する問題