排序
sort
function score只是算_score,而sort是指定字段排序。
距离排序:
fielddata&doc value
- text类型不能排序,keyword类型可以排序
- text类型字段排序(或agg)需要设置 fielddata
fielddata开启
fielddata只针对text类型又效果。
分词之后频率最高的10个term?
- 不需要排序的字段可以关掉
Elasticsearch深入:字段的存储(_source、倒排、Doc_value) - 云+社区 - 腾讯云
elasticsearch的Doc Values 和 Fielddata_thomas0yang的专栏-CSDN博客
分页
from、size【有大分页问题】
深度分页问题
scroll【创建快照,所以不能实时】【导出用】
search after【根据主键找】【相当于sql根据主键分页】
- search_after 相当于mysql中根据主键找到当前分页第一条,然后limit
- search_after必须指定一个排序的值,排序值唯一。(主键)
search after避免深度分页问题
乐观锁
_version字段不能保证文档唯一性?现在使用_seq_no + _primary_term来保证文档的唯一性。
_version does not uniquely identify a particular version of a document · Issue #19269 · elastic/elasticsearch
_primary_term:每当Primary Shard发生重新分配时,比如重启,Primary选举等,_primary_term会递增1。
_primary_term主要是用来恢复数据时处理当多个文档的_seq_no一样时的冲突,避免Primary Shard上的写入被覆盖。
使用外部的唯一版本号
version+version_type=external手动修改_version