Tenho um problema ao escrever uma consulta de intervalo para pesquisa elástica em execução no Docker em meu exemplo do Spring Boot .
Tentei escrever RangeQuery mas não consigo implementá-lo emelasticsearchClient.search.
Como eu posso fazer isso?
Aqui está o trecho de código mostrado abaixo
public List<Item> searchItemsByPriceRange(double minPrice, double maxPrice) throws IOException {
RangeQuery rangeQuery = new RangeQuery.Builder()
.field("price") // Specify the field name here
.gte(JsonData.of(minPrice)) // Greater than or equal to minPrice
.lte(JsonData.of(maxPrice)) // Less than or equal to maxPrice
.build();
log.info("Elasticsearch query: {}", rangeQuery.toString());
SearchResponse<Item> response = elasticsearchClient.search(q ->
q.index("itemindex").query(rangeQuery), Item.class);
log.info("Elasticsearch response: {}", response.toString());
return extractItemsFromResponse(response);
}
private List<Item> extractItemsFromResponse(SearchResponse<Item> response) {
return response
.hits()
.hits()
.stream()
.map(Hit::source)
.collect(Collectors.toList());
}
Aqui está a parte do problema
SearchResponse<Item> response = elasticsearchClient.search(q ->
q.index("itemindex").query(rangeQuery), Item.class);
Cannot resolve method 'query(RangeQuery)'
Você precisa usar a
Query.Builder
noquery()
método e com isso você pode definir orangeQuery