如何将搜索查询从ElasticsearchRepository迁移到ElasticsearchOperations



我的存储库类通过使用标准方法名findByxxx来使用查询。它还使用NativeSearchQueryBuilder进行自定义查询。

由于search((方法已从ElasticsearchRepository中删除,我将创建相应的类来使用ElasticsearchOperations。我的代码如下。

@Repository
public interface BookRepository extends ElasticsearchRepository<Book, String> {

public Optional<Book> findById(String bookId);
//default public Page<Book> fetchBooksForUser(String userId, Pageable pageable) {...}
}

@Service
public class BookOperation{   //new class

@Autowired
private ElasticsearchOperations elasticsearchOperations;

public Page<Book> fetchBooksForUser(String userId, Pageable pageable) {..use elasticsearchOperations...}
}

@Service
public class BookServiceImpl implements BookService {

@Autowired
private BookRepository bookRepository;

@Autowired
private BookOperation bookOperation;

//some methods use bookRepository, some methods use formsPackageOperation
}

我有20多个知识库类。我不想重复这20次。有更好的方法吗?

您只需要创建一个存储库片段,请查看https://docs.spring.io/spring-data/elasticsearch/docs/current/reference/html/#repositories.custom-实现。

在接口中定义所需的方法,在Impl文件中实现必要的逻辑——只需将ElasticsearchOperations注入实现类即可。

至于现有存储库中的更改:您只需要将自定义接口添加到implements子句中。

相关内容

  • 没有找到相关文章

最新更新