在SearchModule模块中,主要涵盖了search
性能相关的依赖注入。
searchModule所挂靠的服务
configureSearch
主要是seach type,search过程一般有两步,首先search带回<_id, _score>,然后fetch带回<_id, _source>。
默认是query_then_fetch
,shard级别的排序;可以设置为dfs_query_then_fetch
,cluster级别的全局排序。它们之间的差异可以参见esCn的柠檬排序。
search方式
configureAggs
在此配置聚合操作,如SUM,AVG,MIN,MAX,直方图分布等。
聚合操作
在static块上面,进行了es aggregation的三种类型(metrics, bucket, pipeline)注册。
static的三种aggs注册
configureFunctionScore
配置自定义排序函数,具体函数使用方法可以参考前文-elasticsearch relevance scoring 检索相关性计算。
ScoreFunctionParser的具体实现类
configureFetchSubPhase
在此注入一些额外信息,比如explain, version, highlight等。
others
Reference
- [Java: What is the difference between
and ?](https://stackoverflow.com/questions/8517121/java-what-is-the-difference-between-init-and-clinit)
PREVIOUSS4-IndicesModule
NEXTS0-Overview