2016-02-08 3 views
3

Я использую Elasticsearch Java API (версия 2.1.1) с Query String Query. Строка запроса вводится пользователем и может содержать синтаксические ошибки. Прямо сейчас кажется, что запрос отправляется на сервер, ответ shardFailure и генерируется исключение.Elasticsearch Java API: проверка строки запроса

Есть ли простой способ проверить запрос в API перед его отправкой на сервер? Прямо сейчас я уловил исключение, но мне нехорошо беспокоить сервер этими запросами.

Запрос построен следующим образом:

QueryBuilders.queryStringQuery("error)"); 

Пример ответа:

QueryParsingException [Не удалось обработать запрос [ошибка)]]; вложенная: NotSerializableExceptionWrapper [Невозможно разобрать 'ошибка)': Обнаружен " ")"") "" в строке 1, столбец 5.

редактировать: Чтобы было ясно: Это совершенно нормально для запроса для размещения специальных символов, таких как скобки или кавычки. Я просто хочу проверить, введен ли пользователь правильный поисковый запрос (например, все скобки/кавычки попарно).

ответ

-2

Вам нужно будет разобрать свою строку и избежать всех специальных символов перед передачей строки вашему методу.

QueryBuilders.queryStringQuery(escapeSpecialCharacters("error)")); 

String escapeSpecialCharacters(String str) { 

    str.replaceAll(/[^\sa-zA-Z0-9]/, "\\'"); 
} 

Вы также можете удалить все специальные символы, если хотите.

Надеюсь, это поможет.

+0

Это не то, что я хочу. Специальные символы, такие как скобки, разрешены, но они должны быть в парах, чтобы быть синтаксически правильными. – moeTi

+0

Что вы подразумеваете под парами? PLease указать – Richa

+0

Если у вас есть две открывающиеся скобки, тогда вам также нужны два закрывающих, иначе это синтаксическая ошибка. – moeTi

Смежные вопросы