我正在对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"在映射后遇到这个问题,我感到非常惊讶。
"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);