gpt4 book ai didi

elasticsearch - Spring Data api(包含或开始)不适用于具有通配符的SPACE

转载 作者:行者123 更新时间:2023-11-29 02:56:04 35 4
gpt4 key购买 nike

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

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

findByUserNameContaining("a b");

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

获取错误:

"Cannot constructQuery '"a b"'. Use expression or multiple clauses instead." EXCEPTION="org.springframework.dao.InvalidDataAccessApiUsageException: Cannot constructQuery '"a b"'. Use expression or multiple clauses instead.

用于停止由于 Space 而创建多个 token 。我有映射:

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

我很惊讶我在 "index": "not_analyzed" in mapping 之后遇到了这个问题。

请帮帮我。提前致谢!

最佳答案

实际上,Spring 数据 api(包含或 startWith)不适用于 String 中的空格。我已经使用 Elastic 核心 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);

关于elasticsearch - Spring Data api(包含或开始)不适用于具有通配符的SPACE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43182552/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com