#java #spring #spring-boot #elasticsearch
Вопрос:
У меня есть простое pojo, как это,
public class CountRequestDto {
private int age;
private String region;
private String zipcode;
private String maritalStatus;
private String gender;
}
Время от времени значения атрибутов будут отличаться, содержащиеся в этом классе. В качестве примера для первого раза атрибуты возраста и региона содержат значения, а все остальные равны нулю. В другом временном почтовом коде статус и пол могут содержать значения,но возраст и регион равны нулю. Аналогично, для конкретного запроса некоторые атрибуты имеют значения, а другие равны нулю. Я хочу знать, можно ли написать один эластичный поисковый запрос для повторного поиска записей в соответствии с атрибутами, содержащими значения.
В качестве примера, если регион и пол содержат значения, а другие значения равны нулю, я хочу, чтобы запрос select был примерно таким (выберите * из таблицы, где регион=»значение 1″ и пол =»мужчина»). просто запрос должен динамически изменяться в соответствии с предоставленными атрибутами.
Мой java-код для поиска данных выглядит следующим образом. Если это неправильно, пожалуйста, направьте меня на правильный путь. В подробностях ссылка будет полезна.
String query = "";
QueryBuilder queryBuilder = QueryBuilders.multiMatchQuery(query, "age","region","zipcode","maritalStatus", "gender");
Query searchQuery = new NativeSearchQueryBuilder().withFilter(queryBuilder).build();
SearchHits<ApprovalDetails> productHits = elasticsearchOperations.search(searchQuery, ApprovalDetails.class, IndexCoordinates.of("approval_details"));
List<ApprovalDetails> productMatches = new ArrayList<ApprovalDetails>();
productHits.forEach(searchHit -> {
productMatches.add(searchHit.getContent());
});
return sendResponse(new Response(ResponseMessage.SUCCESS, productMatches.size()));
Пожалуйста, кто-нибудь может предоставить запрос или код для выполнения этой задачи. Я действительно оцениваю это.