排序过程

  • 排序是针对字段原始内容进行的。倒排索引无法发挥作用
  • 需要引用正排索引。通过文档id和字段快速得到字段原始内容
  • Elasticsearch排序实现的两种方法

    • Fielddata
    • Doc Values(列式存储,对Text类型无效)
    • image.png
    • 关闭 doc_values:默认开启,可以通过Mapping设置关闭

      1. put test_keyword/_mapping
      2. {
      3. "properties":{
      4. "user_name":{
      5. "type":"keyword",
      6. "doc_values":false
      7. }
      8. }
      9. }
      • 增加索引的速度,减少磁盘空间
      • 如果重新打开,需要重建索引
      • 什么时候关闭:明确不需要做排序及聚合分析

        分页

  • from + size > 10000会报错

  • _Search Afte_r避免深度分页
    • 不支持指定页数(from)
    • 只能往下翻
    • 第一步搜索需要指定sort,并且保证值是唯一的(可以通过加入_id保证唯一性)
    • 然后使用上一次,最后一个文档的sort值进行排序
  • Scroll API
    • 创建一个快照,有新的数据写入后无法查到
    • 每次查询,输入上一次的scroll_id
    • 适合数据导出