2016-01-07 4 views
0

Я пытаюсь использовать @query аннотацию в elasticsearch пружинных данных, чтобы сделать сложный запрос, но когда я попытался следующий простой запрос я получаю ошибкуelasticsearch @query весной данных аннотаций

@Query(value="{'bool':{'must':{'field':{'name':?0}}}}") 
Segment findByName(String name); 

Стек трассировки

[ERROR] com.innvo.aop.logging.LoggingAspect - Exception in 
com.innvo.web.rest.RouteResource.elastic() with cause = null and 
exception {} 
org.elasticsearch.action.search.SearchPhaseExecutionException: Failed to 
execute phase [dfs], all shards failed; shardFailures {[6JK9sflAQK6fSCuDr- 
AgkQ][segment][0]: SearchParseException[[segment][0]: from[0],size[10]: 
Parse Failure [Failed to parse source   
[{"from":0,"size":10,"query_binary": 
"eydib29sJzp7J211c3QnOlt7J3Rlcm0nOnsnaWQnOic1MjAwJ319XX19"}]]]; 
nested: QueryParsingException[[segment] Failed to parse]; nested: 
JsonParseException[Unexpected character (''' (code 39)): was expecting 
either valid name character (for unquoted name) or double-quote (for 
quoted) to start field name 
at [Source: [[email protected]; line: 1, column: 3]]; }{[6JK9sflAQK6fSCuDr- 
AgkQ][segment][1]: SearchParseException[[segment][1]: from[0],size[10]: 
Parse Failure [Failed to parse source 
[{"from":0,"size":10,"query_binary": 
"eydib29sJzp7J211c3QnOlt7J3Rlcm0nOnsnaWQnOic1MjAwJ319XX19"}]]]; nested: 
QueryParsingException[[segment] Failed to parse]; 
nested:JsonParseException[Unexpected character (''' (code 39)): was 
expecting either valid name character (for unquoted name) or double-quote 
(for quoted) to start field name 
at [Source: [[email protected]; line: 1, column: 3]]; }{[6JK9sflAQK6fSCuDr- 
AgkQ][segment][2]: SearchParseException[[segment][2]: from[0],size[10]: 
Parse Failure [Failed to parse source  
[{"from":0,"size":10,"query_binary": 
"eydib29sJzp7J211c3QnOlt7J3Rlcm0nOnsnaWQnOic1MjAwJ319XX19"}]]]; nested: 
QueryParsingException[[segment] Failed to parse]; nested: 
JsonParseException[Unexpected character (''' (code 39)): was expecting 
either valid name character (for unquoted name) or double-quote (for 
quoted) to start field name 

ответ

2

в @Query аннотации вы просто должны использовать сбежавшие двойные кавычки вместо одинарных кавычек:

@Query(value="{\"bool\":{\"must\":{\"term\":{\"name\":\"?0\"}}}}") 
Segment findByName(String name); 

Также обратите внимание, что я заменил field на term (или match также возможен), так как field недействительный запрос.

+0

Я пробовал, но получаю ту же ошибку –

+0

Вы уверены, что это точно такая же ошибка, то есть сообщение о неожиданном характере 39 (одинарная кавычка). – Val

+0

org.elasticsearch.action.search.SearchPhaseExecutionException: Не удалось выполнить фазу [dfs], все осколки не сработали; shardFailures {[tnDFcLa9TgWCCuRgrok6VA] [сегмент] [0]: SearchParseException [[segment] [0]: from [0], size [10]: Parse Failure [Не удалось разобрать источник [{"from": 0, "size": 10, "query_binary": "eyJib29sIjp7Im11c3QiOnsiZmllbGQiOnsibmFtZSI6dGVzdH19fX0 ="}]]]; inested: QueryParsingException [[segment] Нет запроса, зарегистрированного для [field]]; } {[tnDFcLa9TgWCCuRgrok6VA] [segment] [1]: SearchParseException [[segment] [1]: from [0], size [10]: Parse Failure [Не удалось разобрать источник [{"from": 0, "size": 10, «query_binary»: « –

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

  • Нет связанных вопросов^_^