当前位置: 首页 > 面试题库 >

Spring Data API(Containing或Startwith)无法与具有通配符的SPACE一起使用

桑宇
2023-03-14
问题内容

我正在对Spring Data使用Elastic Search。

我在存储库中有一个简单的方法:

findByUserNameContaining("a b");

由于SPACE,此方法未给出预期结果。

错误获取:

“无法构造查询’ “ a b” ‘。请使用表达式或多个子句。EXCEPTION =“
org.springframework.dao.InvalidDataAccessApiUsageException:无法构造查询’ ” a b“
‘,请使用表达式或多个子句。

用于由于空间而停止创建多个令牌。我有映射:

"userName": {
    "type": "string",
    "index": "not_analyzed"
},

"index": "not_analyzed"在映射后遇到这个问题,我感到非常惊讶。

请帮我。提前致谢!


问题答案:

实际上,Spring数据API(包含或startWith)不适用于String中的空间。我已经用Elastic core api实现了相同的功能。

NativeSearchQueryBuilder aNativeSearchQueryBuilder = new NativeSearchQueryBuilder();
        aNativeSearchQueryBuilder.withIndices(indexName).withTypes(type);
        final BoolQueryBuilder aQuery = new BoolQueryBuilder();

            aQuery.must(QueryBuilders.queryStringQuery("a b").defaultField("UserName"));

NativeSearchQuery nativeSearchQuery = aNativeSearchQueryBuilder.withQuery(aQuery).build();
        List<Object> aDatas = elasticsearchTemplate.queryForList(nativeSearchQuery, Object.class);


 类似资料:
  • 想得到一些建议 我的班级结构是这样的 在我的主代码(MainProg)中,我试图使用相同的函数来引用服务类中的2个方法,并看到注释中的编译错误 有没有办法声明我的函数对象,以便可以使用相同的函数对象来引用采用不同类型参数的方法?

  • 我正在使用ActiveMQ Artemis 2.17.0。我想创建一个具有通配符语法的消费者,它将使用来自多个地址的消息。我写了《下一个消费者》。但它消耗的是地址

  • 问题内容: 我使用SpringBoot进行REST Web服务开发,并使用SonarQube进行静态分析。 我的应用程序中有一些端点,它们的外观如下: SonarQube抱怨将ResponseEntity与通配符一起使用,并向我报告了一个 严重问题:“返回参数中不应使用通用通配符类型” 。 我想知道是否应该在SonarQube中禁用此验证,或者针对这些情况提出不同的返回类型。 你怎么看待这件事?

  • 问题内容: 我是AngularJS的新手,正在用记号表构建仪表板。 试图将dygraphs网站上的示例代码放在ng-repeat- list中,以进行测试。对于y中的每个x,期望有相同的样本图。不幸的是,该图没有绘制,只是轴,控制台没有显示任何错误。 如果我删除ng-repeat,尽管可以(单个图形)工作- dygraphs代码有效。当然,像我在这里那样直接在视图中绘制图形没有任何意义,但我仍然想

  • 问题内容: 我实例化以下列表: 上面的方法不起作用。我收到编译器错误。但是,以下工作原理: 我知道您可以将对象添加到包含 无限制 通配符而不是有界通配符的集合中。 但是,为什么上述方法不起作用?对象是整数的超类型,所以为什么不能添加它? 问题答案: 那声明它是一个列表的东西,是Integer的超类型,而不是列表可以包含任何东西,它们是Integer的超类型。换句话说,对于编译器来说,它可能是a ,

  • 问题内容: 我的程序应该等待按下向左或向右箭头键,然后更改一个值,以便下次更新PaintComponent时,屏幕看起来有所不同。但是,运行该程序时,屏幕没有变化。 以下是变量声明: 这是主要的KeyListener声明: 这是用于绘画的方法: 当我运行该程序时,该程序会打印外壳,但是当我按箭头键时,屏幕上没有任何变化。 问题答案: 您需要先将关键侦听器添加到组件,然后才能调用它: 您还需要使组件