学习Ordering的背景是这样的:去年我在负责搜索业务开发的时候,将所有需要搜索以及需要展示的字段通通插入到ElasticSearch的索引中保存下来。这样做的好处是当Es搜索出数据之后可以直接将数据组织起来返回给前端,不再需要进行数据库的查询,减少了数据库的压力;坏处也显而易见,当数据库中的表或者需要展示的数据有变动则需要重新进行数据的索引。综合来看这样做的弊大于利。所以现在改成Es中只索引需要搜索的数据,搜索返回后用结果的id去数据库中再进行一次查询。因为id在数据库中一般都是主键或者是有唯一索引的字段,因此这样的一次查询耗费的时间是很少的,这样避免了Es中的数据频繁的要重新索引。
这样做唯一需要注意的是:数据库查询后的数据顺序要和Es中搜索出来的数据顺序保持一致,这样才能保证相关性高的数据在前面展示。