首先,就文档而言,不支持自动模糊查询生成
因此,我们将不得不使用自定义存储库方法。
假设您的基本存储库是
@Repositorypublic interface UserRepository extends CrudRepository<UserEntity, Long>
您必须创建一个Custom仓库接口来添加您的自定义方法(这是所有标准Spring数据,没什么特别的)
public interface UserRepositoryCustom { public List<User> findFuzzyByLastNameAndFirstName(String firstName, String lastName);}并让您的历史存储库实现此接口,即:
@Repositorypublic interface UserRepository extends CrudRepository<UserEntity, Long>, UserRepositoryCustom
现在,您将需要以某种方式实现“自定义”界面。这很容易(再次参见手册,您必须遵守命名方案,以便Spring可以在运行时连接接口和实现):
public class UserRepositoryCustomImpl implements UserRepositoryCustom { @Autowired protected ElasticsearchTemplate elasticsearchTemplate; public List<User> findFuzzyByLastNameAndFirstName(String firstName, String lastName) { Criteria c = new Criteria("firstName").fuzzy(firstName).and(new Criteria("lastName").fuzzy(lastName)); return elasticsearchTemplate.queryForList(new CriteriaQuery(c), CandidateEntity.class); }}重新编译,重新启动,您应该能够使您的存储库像这样进行模糊搜索。
再一次(请参阅问题注释),您可能还希望将查询定义为字符串,并且不需要自定义实现。这取决于你。



