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"在映射后遇到了这个问题。
请帮我。提前致谢!
实际上 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)
| 归档时间: |
|
| 查看次数: |
3949 次 |
| 最近记录: |