2015-11-24 4 views
1

У меня есть следующее исключение:ElasticSearch - непризнанные маскирующий

[index {[mmm][info][1484211], source[ 
{"content":"В 1966 г. М. Флинном (Flynn) был предложен следующий подход к классификации архитектур вычислительных систем. В основу было положено понятие потока, под которым понимается последовательность элементов, команд или данных, обрабатываемая процессором. Соответствующая система классификации основана на рассмотрении числа потоков инструкций и потоков данных и описывает четыре базовых класса (табл. 2.8, рис. 2.48). Коротко рассмотрим отличительные особенности каждой из архитектур. Таблица 2.8 Классификация Флинна Поток данных Поток команд одиночный множественный"}]}] 
MapperParsingException[failed to parse [content]]; nested: JsonParseException[Unrecognized character escape '(' (code 40) 
at [Source: [email protected]3d; line: 1, column: 46]]; 
    at org.elasticsearch.index.mapper.FieldMapper.parse(FieldMapper.java:339) 
    at org.elasticsearch.index.mapper.DocumentParser.parseObjectOrField(DocumentParser.java:314) 
    at org.elasticsearch.index.mapper.DocumentParser.parseValue(DocumentParser.java:441) 
    at org.elasticsearch.index.mapper.DocumentParser.parseObject(DocumentParser.java:267) 
    at org.elasticsearch.index.mapper.DocumentParser.innerParseDocument(DocumentParser.java:127) 
    at org.elasticsearch.index.mapper.DocumentParser.parseDocument(DocumentParser.java:79) 
    at org.elasticsearch.index.mapper.DocumentMapper.parse(DocumentMapper.java:318) 
    at org.elasticsearch.index.shard.IndexShard.prepareIndex(IndexShard.java:551) 
    at org.elasticsearch.index.shard.IndexShard.prepareIndex(IndexShard.java:542) 
    at org.elasticsearch.action.support.replication.TransportReplicationAction.prepareIndexOperationOnPrimary(TransportReplicationAction.java:1049) 
    at org.elasticsearch.action.support.replication.TransportReplicationAction.executeIndexRequestOnPrimary(TransportReplicationAction.java:1060) 
    at org.elasticsearch.action.index.TransportIndexAction.shardOperationOnPrimary(TransportIndexAction.java:170) 
    at org.elasticsearch.action.support.replication.TransportReplicationAction$PrimaryPhase.performOnPrimary(TransportReplicationAction.java:579) 
    at org.elasticsearch.action.support.replication.TransportReplicationAction$PrimaryPhase$1.doRun(TransportReplicationAction.java:452) 
    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: com.fasterxml.jackson.core.JsonParseException: Unrecognized character escape '(' (code 40) 
at [Source: [email protected]3d; line: 1, column: 46] 
    at com.fasterxml.jackson.core.JsonParser._constructError(JsonParser.java:1581) 
    at com.fasterxml.jackson.core.base.ParserMinimalBase._reportError(ParserMinimalBase.java:533) 
    at com.fasterxml.jackson.core.base.ParserMinimalBase._handleUnrecognizedCharacterEscape(ParserMinimalBase.java:510) 
    at com.fasterxml.jackson.core.json.UTF8StreamJsonParser._decodeEscaped(UTF8StreamJsonParser.java:3171) 
    at com.fasterxml.jackson.core.json.UTF8StreamJsonParser._finishString2(UTF8StreamJsonParser.java:2456) 
    at com.fasterxml.jackson.core.json.UTF8StreamJsonParser._finishAndReturnString(UTF8StreamJsonParser.java:2411) 
    at com.fasterxml.jackson.core.json.UTF8StreamJsonParser.getText(UTF8StreamJsonParser.java:285) 
    at org.elasticsearch.common.xcontent.json.JsonXContentParser.text(JsonXContentParser.java:88) 
    at org.elasticsearch.common.xcontent.support.AbstractXContentParser.textOrNull(AbstractXContentParser.java:194) 
    at org.elasticsearch.index.mapper.core.StringFieldMapper.parseCreateFieldForString(StringFieldMapper.java:354) 
    at org.elasticsearch.index.mapper.core.StringFieldMapper.parseCreateField(StringFieldMapper.java:294) 
    at org.elasticsearch.index.mapper.FieldMapper.parse(FieldMapper.java:331) 
    ... 17 more 

Уже несколько наших я не могу узнать, что это проблема. Как я вижу, все специальные символы ускользают, но я постоянно получаю это исключение. Я использую elasticearch 2.1. Я тоже попытался с результатом 1.4, то же самое. Как это исправить?

ответ

2

Ошибка произошла от парсера JSON, а не самого elasticsearch. Ваш

«В 1966 г. М. Флинном (Flynn) был предложен следующий подход к классификации архитектур вычислительных систем. В основу было положено понятие потока, под которым понимается последовательность элементов, команд или данных, обрабатываемая процессором . Соответствующая система классификация на основе числа потоков инструкций и потоков данных и оп сывает четыре базовых класса (табл. 2.8, рис. 2,48). Коротко рассмотрим отличительные особенности каждой из архитектур. Таблица 2.8 Классификация Флинна Поток данных Поток команд одиночный множественный»

не является допустимым для JSON строки. Когда синтаксический анализатор видит символ «\» в String, он предполагает, что это escape-символ, а следующий символ должен быть управляющий символ который в вашем случае это не так. Ни один из них ("или") не определен как управляющие символы в синтаксисе JSON.

Управляющие символы для JSON syntax в полукокса (символ) определение:

char 
any-Unicode-character- 
    except-"-or-\-or- 
    control-character 
\" 
\\ 
\/ 
\b 
\f 
\n 
\r 
\t 
\u four-hex-digits 
Смежные вопросы