您的位置:首页 > 娱乐 > 明星 > 杭州房产网签流程_大连市建设市场综合管理平台_百度入口_友情链接查询

杭州房产网签流程_大连市建设市场综合管理平台_百度入口_友情链接查询

2025/4/10 23:36:50 来源:https://blog.csdn.net/2301_80093566/article/details/146834429  浏览:    关键词:杭州房产网签流程_大连市建设市场综合管理平台_百度入口_友情链接查询
杭州房产网签流程_大连市建设市场综合管理平台_百度入口_友情链接查询

文章目录

    • 一、核心API工具类
    • 二、查询类型与API使用
      • 1. 全文检索查询
        • (1) Match Query
        • (2) Multi-Match Query
      • 2. 精确查询
        • (1) Term Query
        • (2) Range Query
      • 3. 复合查询(Boolean Query)
    • 三、综合案例实现
      • 需求说明:
      • Java代码实现:
    • 四、关键点说明
    • 五、扩展建议

一、核心API工具类

QueryBuilders 工具类提供构建所有ES查询的静态方法,与DSL语法一一对应

二、查询类型与API使用

1. 全文检索查询

(1) Match Query

DSL示例:

GET /index/_search
{"query": {"match": {"field": "搜索内容"}}
}

Java API:

QueryBuilders.matchQuery("字段名", "搜索内容");
(2) Multi-Match Query

DSL示例:

{"multi_match": {"query": "搜索内容","fields": ["字段1", "字段2"]}
}

Java API(可变参数):

QueryBuilders.multiMatchQuery("搜索内容", "字段1", "字段2", ...);

2. 精确查询

(1) Term Query

DSL示例:

{"term": {"字段名": {"value": "精确值"}}
}

Java API:

QueryBuilders.termQuery("字段名", "精确值");
(2) Range Query

DSL示例:

{"range": {"price": {"gte": 100,"lte": 300}}
}

Java API:

// 支持链式调用
QueryBuilders.rangeQuery("price").gte(100).lte(300);

3. 复合查询(Boolean Query)

DSL结构:

{"bool": {"must": [ ... ],     // 必须匹配,参与算分"filter": [ ... ],   // 必须匹配,不参与算分"should": [ ... ],   // 至少匹配一个"must_not": [ ... ]  // 必须不匹配}
}

Java API:

BoolQueryBuilder boolQuery = QueryBuilders.boolQuery().must(QueryBuilders.matchQuery(...))    // 添加必须条件.filter(QueryBuilders.termQuery(...))   // 添加过滤条件.should(...)                            // 添加可选条件.mustNot(...);                          // 添加排除条件

三、综合案例实现

需求说明:

  • 搜索"脱脂牛奶"
  • 品牌必须为"德亚"
  • 价格低于30000 元

Java代码实现:

@Test
void testComplexSearch() throws IOException {
// 1. 创建SearchRequest
SearchRequest request = new SearchRequest("items");// 2. 构建DSL
request.source().query(QueryBuilders.boolQuery().must(QueryBuilders.matchQuery("name", "脱脂牛奶")) // 全文检索,参与算分.filter(QueryBuilders.termQuery("brand", "德亚"))   // 精确匹配,不参与算分.filter(QueryBuilders.rangeQuery("price").lt(30000)) // 范围过滤);// 3. 发送请求
SearchResponse response = client.search(request, RequestOptions.DEFAULT);// 4. 解析结果(封装方法)
parseResponse(response);
}// 结果解析封装方法
private void parseResponse(SearchResponse response) {SearchHits hits = response.getHits();for (SearchHit hit : hits) {String json = hit.getSourceAsString();ItemDoc doc = JSONUtil.toBean(json, ItemDoc.class);System.out.println("doc = " + doc);}
}

运行结果:

四、关键点说明

  1. 链式调用BoolQueryBuilder 支持链式调用,可添加多个子查询条件
  2. 算分控制
    • must:条件必须满足,且参与相关性算分
    • filter:条件必须满足,但不参与算分,适合精确过滤
  3. 参数映射:Java API参数与DSL结构一一对应,可通过DSL反推Java代码
  4. 可变参数multiMatchQuery() 使用可变参数接收多个字段名

五、扩展建议

  1. 地理查询:使用 geoDistanceQuery() 实现附近酒店搜索
  2. 算分函数:结合 functionScoreQuery() 实现自定义排序
  3. 高亮显示:通过 HighlightBuilder 添加搜索结果高亮

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com