深入解析 `org.elasticsearch.action.search.SearchRequest` 类

server/2024/10/20 3:31:45/

在Elasticsearch中,SearchRequest 类是执行搜索操作的核心构造,它封装了所有与搜索请求相关的参数和设置。本文将详细介绍该类的成员属性及方法,帮助开发者更好地理解和利用其功能。

成员属性

基本属性

  • indices: String[] - 指定要搜索的索引名称数组。
  • types: String[](已废弃)- 指定文档类型,Elasticsearch 7.x后不再使用。
  • routing: String - 可用于限制搜索范围到特定路由值的文档。
  • preference: String - 控制搜索时的分片选择偏好。
  • searchType: SearchType - 搜索类型,如QUERY_THEN_FETCHDFS_QUERY_THEN_FETCH
  • source: SearchSourceBuilder - 搜索源构建器,定义查询、排序、聚合等搜索请求体内容。
  • scroll: TimeValue - 用于滚动搜索的时间周期。
  • requestCache: Boolean - 是否使用请求缓存。
  • allowPartialSearchResults: Boolean - 是否允许返回部分结果集。
  • batchedReduceSize: Integer - 批量归约的大小。
  • maxConcurrentShardRequests: Integer - 最大并发分片请求数。
  • waitForCheckpoints: Long - 等待检查点的个数。
  • waitForCheckpointsTimeout: TimeValue - 等待检查点超时时间。
  • preFilterShardSize: Integer - 预过滤分片大小,默认由 DEFAULT_PRE_FILTER_SHARD_SIZE 定义。
  • ccsMinimizeRoundtrips: Boolean - 是否最小化跨集群搜索的往返次数。
  • fieldsOptionEmulationEnabled: Boolean - 是否启用字段选项模拟。
  • minCompatibleShardNode: Version - 最低兼容的节点版本。
  • indicesOptions: IndicesOptions - 控制如何处理未找到的索引和如何扩展通配符表达式的选项。
  • includeDataStreams: Boolean - 是否包含数据流。
  • defaultCcsMinimizeRoundtrips: Boolean - 跨集群搜索默认是否最小化往返次数。
  • defaultFieldsEmulationEnabled: Boolean - 字段选项模拟默认是否启用。

辅助属性

  • localClusterAlias: String - 当前请求的本地集群别名。
  • absoluteStartMillis: Long - 绝对开始时间毫秒值。
  • finalReduce: Boolean - 是否执行最终归约阶段。
  • pointInTimeBuilder: PointInTimeBuilder - 点在时间搜索构建器。

方法概览

核心方法

  • writeTo(StreamOutput out): 将请求序列化写入输出流。
  • validate(): 验证搜索请求的有效性。
  • getLocalClusterAlias(): 获取本地集群别名。
  • isFinalReduce(): 判断是否执行最终归约。
  • getOrCreateAbsoluteStartMillis(): 获取或创建绝对开始时间。
  • getAbsoluteStartMillis(): 获取绝对开始时间。
  • validateIndices(ClusterState state): 验证索引是否存在且可访问。
  • setCcsMinimizeRoundtrips(boolean ccsMinimizeRoundtrips): 设置是否最小化跨集群搜索的往返次数。
  • isCcsMinimizeRoundtrips(): 查询是否已设置最小化跨集群搜索的往返次数。
  • setFieldsOptionEmulationEnabled(boolean fieldsOptionEmulationEnabled): 启用或禁用字段选项模拟。
  • isFieldsOptionEmulationEnabled(): 判断字段选项模拟是否启用。
  • setBatchedReduceSize(int batchedReduceSize): 设置批量归约大小。
  • getBatchedReduceSize(): 获取批量归约大小。
  • setMaxConcurrentShardRequests(int maxConcurrentShardRequests): 设置最大并发分片请求数。
  • getMaxConcurrentShardRequests(): 获取最大并发分片请求数。
  • setWaitForCheckpoints(long waitForCheckpoints): 设置等待检查点的数量。
  • getWaitForCheckpoints(): 获取等待检查点的数量。
  • setWaitForCheckpointsTimeout(TimeValue waitForCheckpointsTimeout): 设置等待检查点超时时间。
  • getWaitForCheckpointsTimeout(): 获取等待检查点超时时间。
  • setPreFilterShardSize(int preFilterShardSize): 设置预过滤分片大小。
  • getPreFilterShardSize(): 获取预过滤分片大小。
  • isSuggestOnly(): 判断是否仅为建议查询。
  • resolveTrackTotalHitsUpTo(SearchContext searchContext): 解析跟踪总命中数上限。
  • rewrite(IndexReader reader): 重写搜索请求以适应索引结构。
  • createTask(long id, String type, String action, TaskId parentTaskId, Map<String, String> headers): 创建搜索任务。
  • buildDescription(): 构建描述此请求的任务字符串。
  • equals(Object obj), hashCode(), toString(): 实现对象比较、哈希码计算和字符串表示。

静态成员

  • FORMAT_PARAMS: 格式化参数常量。
  • DEFAULT_PRE_FILTER_SHARD_SIZE: 默认预过滤分片大小。
  • DEFAULT_BATCHED_REDUCE_SIZE: 默认批量归约大小。
  • DEFAULT_ABSOLUTE_START_MILLIS: 默认绝对开始时间毫秒值。
  • DEFAULT_INDICES_OPTIONS: 默认索引选项。

通过上述成员属性和方法的解析,可以看出 SearchRequest 类设计得非常全面且灵活,旨在满足各种复杂的搜索需求。开发者可以根据具体应用场景调整这些参数,实现高效的搜索操作。


http://www.ppmy.cn/server/35126.html

相关文章

如何确定Unity/VNXe存储的主控制器(Primary SP)

DELL EMC的Unity或者VNXe存储都是双控的架构&#xff08;VNXe 1代设备有部分支持单控配置&#xff09;&#xff0c;有些的CLI检查命令是必须在primary SP&#xff0c;也就是主控制器上执行的&#xff0c;那么问题来了&#xff0c;如何确定两个控制器中那个是主控制器呢&#xf…

前端开发中可能出现内存泄漏的情况总结

前端开发中可能出现内存泄漏的情况主要包括以下几种&#xff1a; 1. 闭包引起的循环引用 当一个函数内部引用了外部作用域的变量&#xff0c;并且该函数的作用域链没有被适时断开&#xff0c;就可能形成循环引用。特别是当DOM元素的事件处理函数使用闭包访问外部变量时&#…

智能文档提取

识别饼状图、条形图转化为json字段 GitHub - LingyvKong/OneChart: official code for "OneChart: Purify the Chart Structural Extraction via One Auxiliary Token"

基于51单片机的手动数字时钟设计

基于51单片机的手动数字时钟 &#xff08;仿真&#xff0b;程序&#xff09; 功能介绍 具体功能&#xff1a; 1.八位数码管显示时分秒&#xff0c;格式为XX-XX-XX&#xff1b; 2.六个按键控制时、分、秒的加减&#xff1b; 3.复位按键重新计时&#xff1b; ​演示视频&am…

【PostgreSQL】pg触发器介绍

注: 本文为云贝教育 刘峰 原创&#xff0c;请尊重知识产权&#xff0c;转发请注明出处&#xff0c;不接受任何抄袭、演绎和未经注明出处的转载。 触发器是在对指定表执行指定更改操作&#xff08;SQL INSERT、UPDATE、DELETE 或 TRUNCATE 语句&#xff09;时自动运行的一组操作…

图神经网络GNN的表达能力

回顾 图卷积神经网络GCN GNN概要 神经网络的表达能力 分类or回归 神经网络的表达能力举例&#xff1a; 深度学习的理论基础和上限 GNN的表达能力 定义&#xff1a;图神经网络的表达能力就是它区分不同图的区分能力 分析常见的GNN的表达能力并设计出表达能力最强的GN…

QT-day1

1、 自由发挥应用场景&#xff0c;实现登录界面。 要求&#xff1a;尽量每行代码都有注释。 #ifndef MYWIDGET_H #define MYWIDGET_H #include <QWidget> #include <QIcon>//窗口 #include <QLabel>//标签库 #include <QMovie>//动态图片库 #include…

机器人操作系统ROS2学习 1

随着智能化时代的进程&#xff0c;机器人也在向着高度智能化的方向发展&#xff0c;这对应的机器人操作系统也就相应而生了。机器人操作系统ROS (Robot Operating System)的诞生为机器人系统的开发与应用带来了很大方便&#xff0c;也聚集了全球大量的应用开发人员推动ROS的发展…