Ключевое слово IN в Springboot Elasticsearch

#java #spring-boot #elasticsearch #spring-data-elasticsearch

#java #пружинный ботинок #эластичный поиск #spring-данные-elasticsearch

Вопрос:

Трудно найти правильные средства построения запросов для создания динамического поискового запроса. Одна вещь, с которой я действительно борюсь, — это найти правильный QueryBuilder для предложения IN.

В приведенном ниже разделе «careIds» я хочу, чтобы NativeSearchQueryBuilder нашел все записи, у которых есть один или несколько careId в careIds.

Желаемый псевдокод:

 if (CollectionUtils.isNotEmpty(careIds)) {
    searchQueryBuilder.withFilter(inQuery("CareIds", careIds);
}
 

Эквивалентным именем метода метода было бы

 findAllByCareIdsIn(final List<Long> careIds);
 

Комментарии:

1. findAllByCareIdsIn(final List<Long> careIds); не работает?

2. Вероятно, так и будет, но я работаю над динамическим запросом в зависимости от различного количества фильтров, заданных пользователем, и мне нужно будет использовать конструктор запросов. Прямо сейчас я использую NativeSearchQueryBuilder и мне понадобится что-то эквивалентное findAllByCareIdsIn() .

Ответ №1:

termsQuery(Field, List<Object>) это было то, что я искал.