Compressor detection can only be called on some ……

今天寫的ES客戶端測試的文件裏一個方法報錯,方法體以下:
java

public IndexResponse createIndex(String indexName, String type,
			String jsonArray) {

		IndexRequestBuilder builder = client.prepareIndex(indexName, type).setSource(jsonArray);
		
		IndexResponse response = builder.execute().actionGet();
		return response;

	}

報錯內容以下:json

Exception in thread "main" MapperParsingException[failed to parse]; nested: NotSerializableExceptionWrapper[not_x_content_exception: Compressor detection can only be called on some xcontent bytes or compressed xcontent bytes];
     at org.elasticsearch.index.mapper.DocumentParser.parseDocument(DocumentParser.java:154)
     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:215)
     at org.elasticsearch.action.index.TransportIndexAction.executeIndexRequestOnPrimary(TransportIndexAction.java:224)
     at org.elasticsearch.action.index.TransportIndexAction.shardOperationOnPrimary(TransportIndexAction.java:158)
     at org.elasticsearch.action.index.TransportIndexAction.shardOperationOnPrimary(TransportIndexAction.java:66)
     at org.elasticsearch.action.support.replication.TransportReplicationAction$PrimaryPhase.doRun(TransportReplicationAction.java:639)
     at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:37)
     at org.elasticsearch.action.support.replication.TransportReplicationAction$PrimaryOperationTransportHandler.messageReceived( TransportReplicationAction.java:279)
     at org.elasticsearch.action.support.replication.TransportReplicationAction$PrimaryOperationTransportHandler.messageReceived( TransportReplicationAction.java:271)
     at org.elasticsearch.transport.RequestHandlerRegistry.processMessageReceived(RequestHandlerRegistry.java:75)
     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: NotSerializableExceptionWrapper[not_x_content_exception: Compressor detection can only be called on some xcontent bytes or compressed xcontent bytes]
     at org.elasticsearch.common.compress.CompressorFactory.compressor(CompressorFactory.java:85)
     at org.elasticsearch.common.xcontent.XContentHelper.createParser(XContentHelper.java:50)
     at org.elasticsearch.index.mapper.DocumentParser.parseDocument(DocumentParser.java:90)
     ... 17 more

在我這裏形成這一異常  的緣由是傳遞的參數jsonArray格式不對,我打印了下jsonArray,格式以下:app

[{"name":"hui1","salary":10000.39982635574,"age":8},
{"name":"hui2","salary":10000.160206564933,"age":11},
{"name":"hui3","salary":10000.417013742277,"age":28},
{"name":"hui4","salary":10000.26786620842,"age":7}]
這裏正確的格式應該是這樣:
{"name":"hui1","salary":10000.39982635574,"age":8}

即使將原來以 "[" 開關的jsonArray去年「[」,改爲這樣:elasticsearch

{"name":"hui1","salary":10000.39982635574,"age":8},
{"name":"hui2","salary":10000.160206564933,"age":11},
{"name":"hui3","salary":10000.417013742277,"age":28},
{"name":"hui4","salary":10000.26786620842,"age":7}

也同樣會報錯。測試

相關文章
相關標籤/搜索