elaticsearch的double类型如何模糊查询,使用Java写一份示例代码
时间: 2024-05-09 12:21:15 浏览: 64
Java如何使用elasticsearch进行模糊查询
5星 · 资源好评率100%
在 Elasticsearch 中,double 类型的模糊查询可以使用范围查询进行实现,即查询一个范围内的数据。例如,要查询 double 类型字段名为 "price",范围在 100 到 200 之间的数据,可以使用以下查询:
```
{
"query": {
"range": {
"price": {
"gte": 100,
"lte": 200
}
}
}
}
```
在 Java 中,可以使用 Elasticsearch 的 Java API 进行查询。以下是一个示例代码:
```java
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.common.unit.Fuzziness;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.index.query.RangeQueryBuilder;
import org.elasticsearch.index.query.TermQueryBuilder;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.elasticsearch.search.sort.SortOrder;
import java.io.IOException;
public class ElasticsearchDemo {
public static void main(String[] args) throws IOException {
// 创建 Elasticsearch 客户端
RestHighLevelClient client = new RestHighLevelClient(RestClient.builder(new HttpHost("localhost", 9200, "http")));
// 构建查询
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
RangeQueryBuilder rangeQuery = QueryBuilders.rangeQuery("price").gte(100).lte(200);
sourceBuilder.query(rangeQuery);
// 执行查询
SearchRequest searchRequest = new SearchRequest("my_index");
searchRequest.source(sourceBuilder);
SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
// 处理查询结果
searchResponse.getHits().forEach(hit -> {
System.out.println(hit.getSourceAsString());
});
// 关闭客户端
client.close();
}
}
```
这个示例代码中,首先创建了一个 Elasticsearch 客户端,然后构建了一个范围查询,查询 double 类型字段名为 "price",范围在 100 到 200 之间的数据。最后执行查询,将查询结果输出到控制台。注意,需要将 "my_index" 替换成你实际使用的索引名。
阅读全文