zoukankan      html  css  js  c++  java
  • es分页搜索

    1、es分页语法
    GET /_search?from=起始数&size=页面显示条数
    例如:GET /test_index/test_type/_search?from=0&size=3

    2、deep paging
    什么是deep paging?简单来说,就是搜索的特别深,比如总共有60000条数据,有3个shard上平分了这些数据,每个shard上有20000条数据。要求每页显示10条数据,这个时候你要搜索到第1000页,实际上要拿到的是10001~10010的数据。我们可以思考一下每个shard上的数据是怎么返回的?
    每个shard都返回10001~10010条的数据,这样理解是错误的!!!
    原理:
    你的请求首先可能是打到一个不包含这个index的shard的node上去,这个node就是一个coordinate node,那么这个coordinate note就会将搜索请求转发到这个index的三个shard所在的node上去。
    就上面的例子中,实际上每个shard都要将内部的20000条数据中的第10001~10010条数据拿出来,不是10条,是10010条数据。3个shard,每个shard都返回10010条数据给coordinate node,coordinate node会收到总共30030条数据,然后在这些数据中按照_score(相关度分数)进行排序,会在其中取到自己需要的第1000页的数据,然后将这10条数返回给客户端。

    搜索的过深的时候,就需要在coordinate node上保存大量的数据,还要进行大量数据的排序,排序之后,再取出对应的那一页数据。这个过程,既耗费网络带宽,耗费内存,还耗费CPU。所以deep paging存在性能的问题,我们应该尽量避免出现这个deep paging操作。

  • 相关阅读:
    【原创】C# 文件操作详解(三)Directory类
    【原创】C# 文件操作详解(一)File类
    【原创】VS使用技巧——工欲善其事必先利其器
    【原创】C# 文件操作详解(四)DirectoryInfo类
    strpos用法
    调试跳转动态打印
    解决DIV超出样式长度自动换行
    PHP时间戳常用转换在(大、小月问题)
    懒人JS
    PHP 快速排序 与二维数组排序
  • 原文地址:https://www.cnblogs.com/qinjf/p/8519460.html
Copyright © 2011-2022 走看看