5 java elasticsearch spring-data-elasticsearch
我有一个Port
以 field命名的实体portName
。我写了下面的Spring Data ES查询方法来进行containing
查询:
List<Port> ports = portRepository.findByPortNameContaining(searchText);
Run Code Online (Sandbox Code Playgroud)
它工作正常,直到searchText
不包含任何空格。如果是这样,我会收到以下错误:
"Cannot constructQuery '*\"sample port\"*'. Use expression or multiple clauses instead."
Run Code Online (Sandbox Code Playgroud)
当我尝试 Spring Data ESsearch
方法时:
List<Port> ports = Lists.newArrayList(portRepository.search(
queryStringQuery(searchText)
.field("portName")
));
Run Code Online (Sandbox Code Playgroud)
如果我有一个名为 的端口,则只有当完全是一个完整的单词Loui Kentucky
时,我才能获得结果,例如searchText
Loui
orKentucky
或 )Loui Kentucky
。同样的情况发生在analyzeWildcard
:
List<Port> ports = Lists.newArrayList(portRepository.search(
boolQuery().should(queryStringQuery(searchText).analyzeWildcard(true).field("portName"))
));
Run Code Online (Sandbox Code Playgroud)
我想构造一个简单的包含查询,它也可以处理空格。没有模糊性。即使我搜索,搜索结果也应该出现i K
asLoui Kentucky
包含该子字符串时,搜索结果也应该出现。