Elasticsearch 搜索Search API(7.5.0)

一、Search API

1. search:官网Search API

  A. 请求:GET / POST  /<index>/_search  | /_search

      {

        "query": {<parameters>}

      }  

    请求参数:index是索引名称,多个以逗号分隔

          parameters是DSL语句,用来搜索请求,查询DSL

  B. 查询参数:

字段 说明
from 起始值(页码)
size 返回的匹配数量(每页条数),默认10,注意:size = 0是特殊搜索,只返回匹配查询的文档数
sort 排序
_source_excludes 查询排除指定字段
_source_includes 查询指定字段

  C. 结果参数

字段 说明
took es执行请求时间(毫秒)
hits
total
value 返回的文档总数
hits
_index 索引名称
_type 文档类型
_id 文档的唯一标识符
_source 原始JSON正文对象(数据)

   D. kibana操作

 

2. Multi Search:官网Multi-Search API

 

3. Search Scroll

 

4. Count

  A. 用于执行查询并获取查询匹配的数目

  B.

  C. Java实现

复制代码
private long getUserEventById(String yearMonth, Long id) {
        BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery()
            .filter(QueryBuilders.termQuery("type", ReportLogType.AUTH_LOG.getType()))
            .mustNot(QueryBuilders.termQuery("auth.status", LogConstants.STATUS_SUCCESS))
            .filter(QueryBuilders.termQuery("user.userId", id));
        SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
        sourceBuilder.query(boolQueryBuilder);
        CountRequest countRequest = new CountRequest(String.format("%s_%s_%s", IndexName.RWS_REPORT_LOG, tenantContext.getTenantId(), yearMonth.replace("-", ".")));
        countRequest.source(sourceBuilder);

        try {
            // 统计身份认证异常数据
            CountResponse countResponse = restHighLevelClient.count(countRequest, RequestOptions.DEFAULT);

            return countResponse.getCount();
        } catch (IOException e) {
            e.printStackTrace();

            return 0;
        }
    }
复制代码

 

  5. Async search: 异步搜索允许用户提交一个搜索请求,然后在后台处理这个请求,而用户可以继续执行其他操作。当搜索结果准备好后,用户可以在之后的时间点获取结果。这对于长时间运行的复杂搜索任务非常有用,比如深度聚合查询或者跨多个大型索引的搜索。

 

二、Search your data

  1. Collapse search results:使用collapse参数根据字段值折叠搜索结果,只返回少量的数据。

     field:指定字段来折叠结果集

    sort:对结果进行排序;

    from:定义第一个折叠结果的偏移量

 

可参考:ES官网 搜索Search

    ES官网 搜索 Java API

    ES组装条件查询语句

    ES日期范围查询

posted @   如幻行云  阅读(698)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
点击右上角即可分享
微信分享提示