深入理解ElasticSearch—查询DSL进阶

一、Apache Lucene默认的评分公式

1、文档匹配需要考虑一下因子

  • 文档权重
  • 字段权重
  • 协调因子
  • 逆文档频率
  • 长度范数
  • 词频
  • 查询范数     

2、TF/IDF评分公式

从上面的公式可以导出以下规则:

  • 越多罕见的词项被匹配上低分越高
  • 文档字段越短(包含更少的词项),文档得分越高
  • 权重越高(不论是索引期还是查询期赋予的权重值),得分越高

3、es对lucene评分的使用

        es使用了lucene的评分功能,但又不仅局限于lucene的评分功能,用户可以根据不同的查询类型以精确控制文档评分的计算(如custom_boost_factor查询,constant_score查询,custom_score查询等),还可以使用脚本(scripting)来改变得分,也可以使用二次评分功能重新计算得分。

二、查询改写

1、前缀查询

查询所有name字段以字母j开头的文档

改写后等效于:

常数得分查询

2、查询改写属性

rewrite属性配置:

  • scoring_boolean
  • constant_score_boolean
  • constant_score_filter
  • top_terms_N
  • top_terms_boost_N

三、二次评分

1、含义

重新计算查询返回文档中指定个数文档的得分。

2、示例

该recore得分将每个文档的得分改写成该文档中year字段对应的值,文档得分等于两次查询文档的得分之和。

3、二次评分的参数配置

  • window_size
  • query_weight
  • rescore_query_weight
  • recore_mode

四、批量操作

1、批量取

2、批量查询

五、排序

1、简单排序、多值排序

2、基于geo字段排序

查找特定国家离自己最近的一个机构

使用映射:

mode可选max min avg

3、基于嵌套对象的排序

六、数据更新API

1、简单更新

2、使用脚本按条件更新

3、使用更新API创建或删除文档

七、使用过滤器优化查询

1、过滤器与缓存

过滤器是很好的缓存候选方案,及过滤器缓存:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值