Запрос в elasticsearch через spring data
Начал изучать elasticsearch и пытаюсь создать запрос в эластиксерч через elasticsearch-spring-data. Данные следующие :
List<Long> bookId;
Long authorId;
Timestamp from;
Timestamp to;
Нужно найти список книг по List<Long> bookId, у которых автор = authorId и книги выпущены с from до to.
То есть подставить в запрос список
List<Long> bookId where author_Id = authorId from ... to...
Как-то так... с помощью чего и как это можно осуществить?
Ответы (1 шт):
Одна из ключевых фишек Spring Data * - создание запроса из правильно именованного метода. В вашем случае метод должен быть назван так:
public interface BookRepository extends Repository<Book, Long>
List<Book> findByAuthorIdAndBookIdInAndIssuedBetween(Long authorId, List<Long> bookIds, Timestamp from, Timestamp to);
Соответственно, возвращаемая сущность, которая мапится на индекс, должна иметь следующие поля:
@Document(indexName="books")
public class Book {
@Id
Long bookId;
Long authorId;
Timestamp issued;
}
Если вы используете платную "Идею", то она самостоятельно подхватит ваш репозиторный интерфейс и при написании запроса будет подсказывать возможные варианты.
Примеры соотношения имён и генерируемых запросов можно посмотреть здесь: https://docs.spring.io/spring-data/elasticsearch/docs/current/reference/html/#elasticsearch.repositories