假设es中有一个商品索引,里面有price价格字段,类型为double,如何使用Java代码对其进行范围搜索
时间: 2024-05-04 12:17:57 浏览: 71
可以使用Elasticsearch Java High Level REST Client来实现范围搜索。具体代码如下:
```java
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost", 9200, "http")));
SearchRequest searchRequest = new SearchRequest("商品索引名称");
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery("price")
.gte(100) // 大于等于100
.lte(1000); // 小于等于1000
searchSourceBuilder.query(rangeQueryBuilder);
searchRequest.source(searchSourceBuilder);
SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
SearchHits hits = searchResponse.getHits();
for (SearchHit hit : hits.getHits()) {
// 处理搜索结果
}
client.close();
```
其中,`QueryBuilders.rangeQuery("price")`表示对`price`字段进行范围搜索;`.gte(100)`表示大于等于`100`的数值;`.lte(1000)`表示小于等于`1000`的数值。如果需要大于`100`且小于`1000`的数值范围搜索,则使用`.gt(100)`和`.lt(1000)`。最后,利用`SearchResponse`对象获取搜索结果,进行处理即可。
阅读全文