11package com .madadipouya .elasticsearch .springdata .example .service .impl ;
22
3- import com .madadipouya .elasticsearch .springdata .example .service .exception .BookNotFoundException ;
43import com .madadipouya .elasticsearch .springdata .example .model .Book ;
54import com .madadipouya .elasticsearch .springdata .example .repository .BookRepository ;
65import com .madadipouya .elasticsearch .springdata .example .service .BookService ;
6+ import com .madadipouya .elasticsearch .springdata .example .service .exception .BookNotFoundException ;
77import com .madadipouya .elasticsearch .springdata .example .service .exception .DuplicateIsbnException ;
8+ import org .elasticsearch .index .query .BoolQueryBuilder ;
9+ import org .elasticsearch .index .query .QueryBuilders ;
10+ import org .springframework .data .elasticsearch .core .ElasticsearchTemplate ;
11+ import org .springframework .data .elasticsearch .core .query .NativeSearchQueryBuilder ;
812import org .springframework .stereotype .Service ;
913
1014import java .util .ArrayList ;
@@ -16,8 +20,11 @@ public class DefaultBookService implements BookService {
1620
1721 private final BookRepository bookRepository ;
1822
19- public DefaultBookService (BookRepository bookRepository ) {
23+ private final ElasticsearchTemplate elasticsearchTemplate ;
24+
25+ public DefaultBookService (BookRepository bookRepository , ElasticsearchTemplate elasticsearchTemplate ) {
2026 this .bookRepository = bookRepository ;
27+ this .elasticsearchTemplate = elasticsearchTemplate ;
2128 }
2229
2330 @ Override
@@ -37,6 +44,13 @@ public List<Book> findByAuthor(String authorName) {
3744 return bookRepository .findByAuthorName (authorName );
3845 }
3946
47+ @ Override
48+ public List <Book > findByTitleAndAuthor (String title , String author ) {
49+ BoolQueryBuilder criteria = QueryBuilders .boolQuery ();
50+ criteria .must ().addAll (List .of (QueryBuilders .matchQuery ("authorName" , author ), QueryBuilders .matchQuery ("title" , title )));
51+ return elasticsearchTemplate .queryForList (new NativeSearchQueryBuilder ().withQuery (criteria ).build (), Book .class );
52+ }
53+
4054 @ Override
4155 public Book create (Book book ) throws DuplicateIsbnException {
4256 if (getByIsbn (book .getIsbn ()).isEmpty ()) {
0 commit comments