当前位置: 首页 > 知识库问答 >
问题:

elasticsearch Spring data@查询注释

臧翰采
2023-03-14

我试图在elasticsearch spring数据中使用@query annotation来进行复杂的查询,但当我尝试下面的简单查询时,我得到了一个错误

@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: [B@4cc4c177; 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: [B@31702d66; 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

共有1个答案

柴高岑
2023-03-14

@Query注释中,只需使用转义双引号而不是单引号:

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

还请注意,我已将字段替换为术语(或者也可以使用匹配),因为字段不是有效的查询。

 类似资料:
  • 我目前正在尝试向我的REST API添加一个新功能。 基本上,我想添加在路径末尾添加查询参数的功能,并将其转换为所有查询选项的映射,例如。 我当前的代码允许我做这样的事情 这将使用所有@pathparam作为字符串变量来生成响应。 我现在想做的是添加: 然后我会让它生成一个映射,可以和pathparam一起用来构建响应 我在想这样的事情[下图]然而@QueryParam似乎只处理一个键值,而不是它

  • 问题内容: 考虑一下我有这行代码 恕我直言,这很容易受到SQL注入的攻击。 因此,我想通过Get / URL发送一个“ var”参数来证明它是可以尝试的,该参数将注入查询,并带有潜在的恶意代码。 我实际上尝试过: 我尝试在执行之前打印出SQL字符串查询,它实际上是2条SQL有效语句。 第一个问题,但实际上似乎mysqli-> query不会一次执行2条语句。是不是 第二个问题,我看到注入查询的一种

  • 我想提高对可能存在的SQL注入攻击的了解。我知道参数化完全避免了SQL注入风险,因此应该在任何地方应用。然而,当有人问我如何利用它时,我想得到一个答案。 我知道基本的SQL注入攻击是如何工作的。例如,一个网站有一个页面<代码>网站。com/users/{id}其中id是用户的主键。如果我们完全信任输入,只需将id参数传递给正在执行的查询,这可能会产生可怕的后果。如果是网站。com/users/1查

  • 问题内容: 这是我目前最喜欢使用的一项前沿功能,并且很快就会消失。我想将子查询聚合注释到现有查询集上。在1.11之前执行此操作意味着自定义SQL或修改数据库。这是this的文档以及其中的示例: 他们在总体上进行注释,这对我来说似乎很奇怪,但是无论如何。 我正在为此而苦苦挣扎,所以我将其沸腾回到我拥有数据的最简单的真实示例中。我有,其中包含许多Space。使用会使你更快乐,但是-暂时-我仅想使用 注

  • 我一直试图理解HQL和JPQL之间的区别。冬眠留档在这里 建议写入选择是JPQL所必需的,但不是在HQL中。但是当我尝试在Spring数据JPA的查询注释中编写HQL或JPQL时,HQL和JPQL都可以工作。 我的理解是,既然查询注释是针对JPA的,为什么支持HQL? 或者让我换个说法- 我们可以在查询注释中编写HQL吗——Spring数据JPA支持两者吗?

  • 问题内容: 我想知道是否可以在@Query批注中包含子查询(org.springframework.data.jpa.repository.Query;) 我在第一个子查询括号上得到QuerySyntaxException。 这是我的查询 谢谢! 问题答案: 不可以,JPQL查询的select子句中不能包含子查询。 JPQL在WHERE和HAVING子句中支持子查询。它可以(至少)是ANY,SOM