在Elasticsearch中,SearchRequest
类是执行搜索操作的核心构造,它封装了所有与搜索请求相关的参数和设置。本文将详细介绍该类的成员属性及方法,帮助开发者更好地理解和利用其功能。
成员属性
基本属性
- indices :
String[]
- 指定要搜索的索引名称数组。 - types :
String[]
(已废弃)- 指定文档类型,Elasticsearch 7.x后不再使用。 - routing :
String
- 可用于限制搜索范围到特定路由值的文档。 - preference :
String
- 控制搜索时的分片选择偏好。 - searchType :
SearchType
- 搜索类型,如QUERY_THEN_FETCH
或DFS_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
类设计得非常全面且灵活,旨在满足各种复杂的搜索需求。开发者可以根据具体应用场景调整这些参数,实现高效的搜索操作。