Spring Data api(包含或 startwith)不适用于具有通配符的 SPACE

Vij*_*pta 6 elasticsearch spring-data spring-data-elasticsearch

我正在将 Elastic Search 与 Spring Data 结合使用。

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

findByUserNameContaining("a b");
Run Code Online (Sandbox Code Playgroud)

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

获取错误:

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

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

"userName": {
    "type": "string",
    "index": "not_analyzed"
},
Run Code Online (Sandbox Code Playgroud)

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

请帮我。提前致谢!

Vij*_*pta 3

实际上 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);
Run Code Online (Sandbox Code Playgroud)