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、添加条件查询、设置查询条件、执行查询、获取查询结果和处理查询结果等步骤,可以实现多条件查询。根据具体需求,可以调整和扩展代码,以满足不同的查询条件和结果处理。