:::tips 文档的查询也需要使用RestHighLevelClient对象,基本步骤包括:

    1. 准备Request对象
    2. 准备请求参数
    3. 发起请求
    4. 解析响应

    查询步骤:

    • 第一步,创建SearchRequest对象,指定索引库名
    • 第二步,利用request.source()构建DSL,DSL中可以包含查询、分页、排序、高亮等
      • query():代表查询条件,利用QueryBuilders.matchAllQuery()可以构建一个match_all查询的DSL语句
    • 第三步,利用client.search()发送请求,得到响应

    关键的API有两个:

    • request.source(),其中包含了查询、排序、分页、高亮等所有功能
    • QueryBuilders,其中包含match、term、function_score、bool等各种查询

    elasticsearch返回的结果是一个JSON字符串,结构包含:

    • hits:命中的结果
      • total:总条数,其中的value是具体的总条数值
      • max_score:所有结果中得分最高的文档的相关性算分
      • hits:搜索结果的文档数组,其中的每个文档都是一个json对象
        • _source:文档中的原始数据,也是json对象

    解析响应结果就是逐层解析JSON字符串,流程如下:

    • SearchHits:通过response.getHits()获取,就是JSON中的最外层的hits,代表命中的结果
      • SearchHits#getTotalHits().value:获取总条数信息
      • SearchHits#getHits():获取SearchHit数组,也就是文档数组
        • SearchHit#getSourceAsString():获取文档结果中的_source,也就是原始的JSON文档数据 :::