elasticsearch API使用几个注意点

一、关于排序优化

如果需要排序,需要灵活设置权重,满足一个查询条件会在 _score累加权重计分,默认总分越高越靠前,如果加了排序条件则会按指定字段排序,这时需要显示追加二级排序字段“_score”。如果按指定字段排序,不需要根据相关度总分排序或不关心排序的场景,请将查询条件设置到SearchRequestBuilder.的postFilter属性来提高性能,这时设置的boost权重是无效的。注意:设置到postFilter里的条件不会过滤聚合查询,必须得设置到SearchRequestBuilder.的query属性。两种也可以混合。

query查询:

post_filter查询:

二、ElasticsearchTemplate 优化相关

指定要获取的字段,同select *一个原理——减少流量;

指定分页,注意page参数其实是offset,不是currentPage;

query查询与post_filter查询条件分别构建,需要相关度排序或聚合的才设置到query条件里;

结果集处理:如下只取一个值,不要单独搞个bean去接,直接用Map.class更好,同原生transport的API,底层返回的结果集仍然是json串,是利用Jackson的ObjectMapper.readValue(source,clazz)来反系列化的;

猜你喜欢

转载自blog.csdn.net/qq_39506978/article/details/88998957
今日推荐