Java ES多条件查询实现流程
流程图
flowchart TD;
A(开始)-->B(建立ES连接);
B-->C(创建SearchRequest);
C-->D(创建BoolQueryBuilder);
D-->E(添加条件查询);
E-->F(设置查询条件);
F-->G(执行查询);
G-->H(获取查询结果);
H-->I(处理查询结果);
I-->J(结束);
步骤
步骤 | 描述 |
---|---|
1 | 建立ES连接 |
2 | 创建SearchRequest |
3 | 创建BoolQueryBuilder |
4 | 添加条件查询 |
5 | 设置查询条件 |
6 | 执行查询 |
7 | 获取查询结果 |
8 | 处理查询结果 |
详细步骤及代码
1. 建立ES连接
建立与Elasticsearch的连接,使用TransportClient或者RestHighLevelClient。
// 使用TransportClient
TransportClient client = new PreBuiltTransportClient(Settings.EMPTY)
.addTransportAddress(new TransportAddress(InetAddress.getByName("localhost"), 9300));
// 或者使用RestHighLevelClient
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost", 9200, "http")));
2. 创建SearchRequest
创建一个SearchRequest对象,用于指定索引和类型。
SearchRequest searchRequest = new SearchRequest("index_name");
searchRequest.types("type_name");
3. 创建BoolQueryBuilder
创建一个BoolQueryBuilder对象,用于构建多条件查询。
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
4. 添加条件查询
根据需求,使用QueryBuilder构建各个条件查询。
QueryBuilder query1 = QueryBuilders.termQuery("field1", "value1");
QueryBuilder query2 = QueryBuilders.rangeQuery("field2").gte("start_value").lte("end_value");
5. 设置查询条件
将条件查询添加到BoolQueryBuilder中。
boolQueryBuilder.must(query1);
boolQueryBuilder.must(query2);
6. 执行查询
将BoolQueryBuilder设置到SearchRequest中,并执行查询。
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
sourceBuilder.query(boolQueryBuilder);
searchRequest.source(sourceBuilder);
SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
7. 获取查询结果
从SearchResponse中获取查询结果。
SearchHits hits = searchResponse.getHits();
SearchHit[] searchHits = hits.getHits();
8. 处理查询结果
对查询结果进行处理,可以遍历searchHits并从中获取需要的数据。
for (SearchHit hit : searchHits) {
String field1Value = hit.getSourceAsMap().get("field1").toString();
String field2Value = hit.getSourceAsMap().get("field2").toString();
// 处理查询结果
}
序列图
sequenceDiagram;
participant 开发者
participant 小白
开发者->>小白: 建立ES连接
开发者->>小白: 创建SearchRequest
开发者->>小白: 创建BoolQueryBuilder
开发者->>小白: 添加条件查询
开发者->>小白: 设置查询条件
开发者->>小白: 执行查询
开发者->>小白: 获取查询结果
开发者->>小白: 处理查询结果
开发者->>小白: 结束
以上是实现"java es多条件查询"的流程和代码示例。通过建立ES连接、创建SearchRequest、创建BoolQueryBuilder、添加条件查询、设置查询条件、执行查询、获取查询结果和处理查询结果等步骤,可以实现多条件查询。根据具体需求,可以调整和扩展代码,以满足不同的查询条件和结果处理。