Easysearch Java SDK 2.0.x 使用指南(三)

Easysearch Java SDK 2.0.x 使用指南(一) 中,我们介绍了 Easysearch Java SDK 2.0.2 的基本使用和批量操作功能。

Easysearch Java SDK 2.0.x 使用指南(二) 中,则详细介绍了索引管理相关的功能,包括索引的创建、删除、开关、刷新、滚动等操作,以及新版 SDK 提供的同步和异步两种调用方式。

本篇文章将继续向大家介绍 Easysearch Java SDK 2.0.2 的 Query 的使用。


1. QueryString:灵活的全文检索

QueryString 查询允许开发者以类似 Easysearch Query DSL 的语法执行全文检索,非常适合处理用户输入的复杂搜索条件。

基本概念

  • fields:指定要检索的字段列表。
  • query:查询字符串,支持布尔操作符(如 AND、OR、NOT)。
  • default_operator:当查询字符串中未明确操作符时使用的默认逻辑操作符。
  • analyze_wildcard:是否对通配符查询进行分析。

代码示例

以下示例展示了如何通过新版 Java 客户端构建一个 QueryString 查询,用于检索标题和内容中同时包含 easysearchjava 的文档:

@Test
public void testQueryString() {
   
   
    // 定义 JSON 查询字符串
    String jsonQuery = "{\n" +
        "  \"query_string\": {\n" +
        "    \"fields\": [\"title\", \"content\"],\n" +
        "    \"query\": \"easysearch AND java\",\n" +
        "    \"default_operator\": \"AND\",\n" +
        "    \"analyze_wildcard\": true\n" +
        "  }\n" +
        "}";

    // 使用 JacksonJsonpMapper 解析 JSON 字符串
    JacksonJsonpMapper mapper = new JacksonJsonpMapper();
    JsonParser parser = mapper.jsonProvider().createParser(new StringReader(jsonQuery));
    Query query = Query._DESERIALIZER.deserialize(parser, mapper);

    // 提取 QueryStringQuery 并构建最终查询
    QueryStringQuery queryStringQuery = query.queryString();
    Query finalQuery = Query.of(q -> q.queryString(queryStringQuery));

    // 输出最终查询对象
    System.out.println(finalQuery);
}

代码解析

  1. 构建 JSON 查询字符串:定义了 query_string 查询的核心参数,包括字段列表和查询条件。
  2. 解析 JSON:使用 JacksonJsonpMapper 将 JSON 字符串解析为 Java 对象。
  3. 提取 QueryStringQuery:从解析后的 Query 对象中获取 QueryStringQuery
  4. 封装最终查询:通过 Query.of 方法将 QueryStringQuery 封装为最终的 Query 对象。

使用场景

  • 用户输入的搜索条件需要支持布尔逻辑。
  • 需要在多个字段中进行全文检索。
  • 支持模糊搜索(如通配符)的场景。

2. Bool Query:构建复杂的多条件查询

Bool Query 可以将多个查询子句组合成一个高级查询。这些子句通过布尔逻辑组合在一起,用于查找结果中返回的匹配文档。

Bool Query 的核心子句

子句 行为
must 逻辑"与"运算符。结果必须匹配此子句中的所有查询。
must_not 逻辑"非"运算符。所有匹配此子句中查询的文档都会从结果中排除。
should 逻辑"或"运算符。结果必须匹配至少一个查询。匹配的 should 子句越多,文档的相关性得分越高。你可以使用 minimum_should_match<
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值