排序

sort

image.png
function score只是算_score,而sort是指定字段排序。
距离排序:
image.png

fielddata&doc value

  • text类型不能排序,keyword类型可以排序
  • text类型字段排序(或agg)需要设置 fielddata

image.png
image.png
fielddata开启
fielddata只针对text类型又效果。
image.png
分词之后频率最高的10个term?
image.png

  • 不需要排序的字段可以关掉

Elasticsearch深入:字段的存储(_source、倒排、Doc_value) - 云+社区 - 腾讯云
elasticsearch的Doc Values 和 Fielddata_thomas0yang的专栏-CSDN博客

分页

image.png
image.png

from、size【有大分页问题】

image.png

深度分页问题

image.png

scroll【创建快照,所以不能实时】【导出用】

image.png
image.png

search after【根据主键找】【相当于sql根据主键分页】

  • search_after 相当于mysql中根据主键找到当前分页第一条,然后limit
  • search_after必须指定一个排序的值,排序值唯一。(主键)

image.png

search after避免深度分页问题

image.png

乐观锁

_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上的写入被覆盖。
image.png

使用外部的唯一版本号

version+version_type=external手动修改_version
image.png