我有以下例外:
[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: org.elasticsearch.common.io.stream.InputStreamStreamInput@5958b83d; 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: org.elasticsearch.common.io.stream.InputStreamStreamInput@5958b83d; 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
我们已经有几个我无法找出问题所在。正如我所看到的所有特殊字符都被转义但是我不断得到这个例外。我使用elasticsearch 2.1。我试过用1.4也是一样的结果。如何解决?
答案 0 :(得分:2)
错误来自JSON解析器而非弹性搜索本身。你的
“В1966г.М.Флинном(Flynn)былпредложенследующийподходк классификацииархитектурвычислительныхсистем。 Восновубылоположено понятиепотока,подкоторымпонимаетсяпоследовательностьэлементов, командилиданных,обрабатываемаяпроцессором。 Соответствующаясистема классификацииосновананарассмотрениичислапотоковинструкцийи потоковданныхиописываетчетыребазовыхкласса(табл.2.8,рис。 2.48)。这是一个不错的选择。 Таблица2.8КлассификацияФлиннаПотокданныхПотоккоманд одиночныймножественный“
对JSON字符串无效。当解析器在String中看到一个字符“\”时,它假定这是转义字符,而下一个字符应该是控制字符,在你的情况下它不是。 “(”或“)”都不是JSON语法中的控制字符。
控制 char (字符)定义中JSON syntax的字符:
char
any-Unicode-character-
except-"-or-\-or-
control-character
\"
\\
\/
\b
\f
\n
\r
\t
\u four-hex-digits