【elasticsearch】关于elasticsearch的max_result_window限制问题的解决方式思考

事情起因:我们使用es作为日志搜索引擎,客户收集到的业务日志非常之大,每次查询后,返回页数较多,由于我们web界面限制每页返回150条,当客户翻到66页之后就会报错。

文章目录

前言

二、实验

1.默认生成20条数据

2.默认查询

3.Search after查询

4.Search after二次查询

总结


前言

报错信息如下:

  • Elasticsearch limits the search result to 10000 messages. With a page size of 150 messages, you can use the first 66 pages. Unable to perform search query: Elasticsearch exception [type=illegal_argument_exception, reason=Result window is too large, from + size must be less than or equal to: [10000] but was [34050]. See the scroll api for a more efficient way to request large data sets. This limit can be set by changing the [index.max_result_window] index level setting.].

一、Search after介绍

        使用Search after作为查询,默认情况下我们使用Scroll search作为查询,可以指定From + size 大小的数据批量返回,这是为了防止因为请求过多的结果而导致内存和CPU资源过度消耗。

        查询结果的分页可以通过使用from and size 来完成,但是当达到深度分页时,成本变得令人望而却步。 默认为 10000 是一种保护措施,搜索请求占用的堆内存和时间成正比。 建议使用 scroll API 来实现高效的深度滚动,但滚动上下文成本高昂,而且成本不高,建议将其用于实时用户请求。 Search after通过提供实时游标来规避此问题。 这个想法是使用上一页的结果来帮助检索下一页。

二、实验

1.默认生成20条数据

for i in `seq 1 20`
do 
    echo 192.168.113.195 -d -P 54000 "zhongguoren $i"
    sleep 1
done

2.默认查询

GET index_1/_search
{
  "query": {
    "match": {
      "message": "zhongguoren"
    }
  },
  "sort": [
    {
      "timestamp": "asc"
    }
  ]
}

默认返回20条数据,通过默认查询知识确认,每条信息的流入时间和条数,目前按照1-20进行排序,没有重复的时间戳。

3.Search after查询

index_1/_search
{
  "size": 10,
  "query": {
    "match": {
      "message": "zhongguoren"
    }
  },
  "sort": [
    {
      "timestamp": "asc"
    },
    {
      "_id": "asc"
    }
  ]
}

先查询前10条,这个和之前默认查询有个区别,就是排序时通过timestamp和_id进行同时排序,在查询结果中得到一个sort字段,值为

"sort": [ - 
          1680770417895,
          "a894bf71-d456-11ed-aa52-000c29f6b211"
        ]

查询后结果值为:

{ - 
  "took": 223,
  "timed_out": false,
  "_shards": { - 
    "total": 4,
    "successful": 4,
    "skipped": 0,
    "failed": 0
  },
  "hits": { - 
    "total": { - 
      "value": 20,
      "relation": "eq"
    },
    "max_score": null,
    "hits": [ - 
      { - 
        "_index": "12_149",
        "_type": "_doc",
        "_id": "2df06a80-d456-11ed-aa52-000c29f6b211",
        "_score": null,
        "_source": { - 
          "elap_accounted_message_size": 140,
          "elap_source_input": "636c90d3246ca975ec999b24",
          "streams": [ - 
            "6969696969697379736c6f67",
            "6969696969727379736c6f67"
          ],
          "elap_remote_port": 35834,
          "elap_source_node": "5bb5d963-7fdd-4e2d-bfdf-a5069bb07097",
          "source": "192.168.113.195",
          "elap_message_id": "01GXAVC899ZZXDJXF453F0RVXJ",
          "message": "<5>Apr 6 16:36:52 root: zhongguoren 1",
          "elap_remote_ip": "192.168.113.195",
          "timestamp": "2023-04-06 08:36:52.135"
        },
        "sort": [ - 
          1680770212135,
          "2df06a80-d456-11ed-aa52-000c29f6b211"
        ]
      },
      { - 
        "_index": "12_149",
        "_type": "_doc",
        "_id": "5244ccf0-d456-11ed-aa52-000c29f6b211",
        "_score": null,
        "_source": { - 
          "elap_accounted_message_size": 140,
          "elap_source_input": "636c90d3246ca975ec999b24",
          "streams": [ - 
            "6969696969697379736c6f67",
            "6969696969727379736c6f67"
          ],
          "elap_remote_port": 52885,
          "elap_source_node": "5bb5d963-7fdd-4e2d-bfdf-a5069bb07097",
          "source": "192.168.113.195",
          "elap_message_id": "01GXAVE3XCWZK71D74YVF58PZ2",
          "message": "<5>Apr 6 16:37:53 root: zhongguoren 2",
          "elap_remote_ip": "192.168.113.195",
          "timestamp": "2023-04-06 08:37:53.086"
        },
        "sort": [ - 
          1680770273086,
          "5244ccf0-d456-11ed-aa52-000c29f6b211"
        ]
      },
      { - 
        "_index": "12_149",
        "_type": "_doc",
        "_id": "5e46d610-d456-11ed-aa52-000c29f6b211",
        "_score": null,
        "_source": { - 
          "elap_accounted_message_size": 140,
          "elap_source_input": "636c90d3246ca975ec999b24",
          "streams": [ - 
            "6969696969697379736c6f67",
            "6969696969727379736c6f67"
          ],
          "elap_remote_port": 57417,
          "elap_source_node": "5bb5d963-7fdd-4e2d-bfdf-a5069bb07097",
          "source": "192.168.113.195",
          "elap_message_id": "01GXAVEQFJP3CN17A2NG41YYHY",
          "message": "<5>Apr 6 16:38:13 root: zhongguoren 3",
          "elap_remote_ip": "192.168.113.195",
          "timestamp": "2023-04-06 08:38:13.232"
        },
        "sort": [ - 
          1680770293232,
          "5e46d610-d456-11ed-aa52-000c29f6b211"
        ]
      },
      { - 
        "_index": "12_149",
        "_type": "_doc",
        "_id": "644eb870-d456-11ed-aa52-000c29f6b211",
        "_score": null,
        "_source": { - 
          "elap_accounted_message_size": 140,
          "elap_source_input": "636c90d3246ca975ec999b24",
          "streams": [ - 
            "6969696969697379736c6f67",
            "6969696969727379736c6f67"
          ],
          "elap_remote_port": 52483,
          "elap_source_node": "5bb5d963-7fdd-4e2d-bfdf-a5069bb07097",
          "source": "192.168.113.195",
          "elap_message_id": "01GXAVF1BQNJZ48GW39G48DQNQ",
          "message": "<5>Apr 6 16:38:23 root: zhongguoren 4",
          "elap_remote_ip": "192.168.113.195",
          "timestamp": "2023-04-06 08:38:23.350"
        },
        "sort": [ - 
          1680770303350,
          "644eb870-d456-11ed-aa52-000c29f6b211"
        ]
      },
      { - 
        "_index": "12_149",
        "_type": "_doc",
        "_id": "a562e070-d456-11ed-aa52-000c29f6b211",
        "_score": null,
        "_source": { - 
          "elap_accounted_message_size": 140,
          "elap_source_input": "636c90d3246ca975ec999b24",
          "streams": [ - 
            "6969696969697379736c6f67",
            "6969696969727379736c6f67"
          ],
          "elap_remote_port": 45404,
          "elap_source_node": "5bb5d963-7fdd-4e2d-bfdf-a5069bb07097",
          "source": "192.168.113.195",
          "elap_message_id": "01GXAVJC1YT9SPVWG81CJGBMXG",
          "message": "<5>Apr 6 16:40:12 root: zhongguoren 5",
          "elap_remote_ip": "192.168.113.195",
          "timestamp": "2023-04-06 08:40:12.534"
        },
        "sort": [ - 
          1680770412534,
          "a562e070-d456-11ed-aa52-000c29f6b211"
        ]
      },
      { - 
        "_index": "12_149",
        "_type": "_doc",
        "_id": "a609f5e0-d456-11ed-aa52-000c29f6b211",
        "_score": null,
        "_source": { - 
          "elap_accounted_message_size": 140,
          "elap_source_input": "636c90d3246ca975ec999b24",
          "streams": [ - 
            "6969696969697379736c6f67",
            "6969696969727379736c6f67"
          ],
          "elap_remote_port": 33127,
          "elap_source_node": "5bb5d963-7fdd-4e2d-bfdf-a5069bb07097",
          "source": "192.168.113.195",
          "elap_message_id": "01GXAVJD1Y45HAS4N7ZN2YXWS0",
          "message": "<5>Apr 6 16:40:13 root: zhongguoren 6",
          "elap_remote_ip": "192.168.113.195",
          "timestamp": "2023-04-06 08:40:13.629"
        },
        "sort": [ - 
          1680770413629,
          "a609f5e0-d456-11ed-aa52-000c29f6b211"
        ]
      },
      { - 
        "_index": "12_149",
        "_type": "_doc",
        "_id": "a6a328a0-d456-11ed-aa52-000c29f6b211",
        "_score": null,
        "_source": { - 
          "elap_accounted_message_size": 140,
          "elap_source_input": "636c90d3246ca975ec999b24",
          "streams": [ - 
            "6969696969697379736c6f67",
            "6969696969727379736c6f67"
          ],
          "elap_remote_port": 41301,
          "elap_source_node": "5bb5d963-7fdd-4e2d-bfdf-a5069bb07097",
          "source": "192.168.113.195",
          "elap_message_id": "01GXAVJE1A0ER5S5BZ8DJKW2A6",
          "message": "<5>Apr 6 16:40:14 root: zhongguoren 7",
          "elap_remote_ip": "192.168.113.195",
          "timestamp": "2023-04-06 08:40:14.633"
        },
        "sort": [ - 
          1680770414633,
          "a6a328a0-d456-11ed-aa52-000c29f6b211"
        ]
      },
      { - 
        "_index": "12_149",
        "_type": "_doc",
        "_id": "a73c3451-d456-11ed-aa52-000c29f6b211",
        "_score": null,
        "_source": { - 
          "elap_accounted_message_size": 140,
          "elap_source_input": "636c90d3246ca975ec999b24",
          "streams": [ - 
            "6969696969697379736c6f67",
            "6969696969727379736c6f67"
          ],
          "elap_remote_port": 36916,
          "elap_source_node": "5bb5d963-7fdd-4e2d-bfdf-a5069bb07097",
          "source": "192.168.113.195",
          "elap_message_id": "01GXAVJF0PXMNPGKVZ7YEJ1JNY",
          "message": "<5>Apr 6 16:40:15 root: zhongguoren 8",
          "elap_remote_ip": "192.168.113.195",
          "timestamp": "2023-04-06 08:40:15.637"
        },
        "sort": [ - 
          1680770415637,
          "a73c3451-d456-11ed-aa52-000c29f6b211"
        ]
      },
      { - 
        "_index": "12_149",
        "_type": "_doc",
        "_id": "a7dfc750-d456-11ed-aa52-000c29f6b211",
        "_score": null,
        "_source": { - 
          "elap_accounted_message_size": 140,
          "elap_source_input": "636c90d3246ca975ec999b24",
          "streams": [ - 
            "6969696969697379736c6f67",
            "6969696969727379736c6f67"
          ],
          "elap_remote_port": 42778,
          "elap_source_node": "5bb5d963-7fdd-4e2d-bfdf-a5069bb07097",
          "source": "192.168.113.195",
          "elap_message_id": "01GXAVJG26BRZG09JSSA96S329",
          "message": "<5>Apr 6 16:40:16 root: zhongguoren 9",
          "elap_remote_ip": "192.168.113.195",
          "timestamp": "2023-04-06 08:40:16.708"
        },
        "sort": [ - 
          1680770416708,
          "a7dfc750-d456-11ed-aa52-000c29f6b211"
        ]
      },
      { - 
        "_index": "12_149",
        "_type": "_doc",
        "_id": "a894bf71-d456-11ed-aa52-000c29f6b211",
        "_score": null,
        "_source": { - 
          "elap_accounted_message_size": 141,
          "elap_source_input": "636c90d3246ca975ec999b24",
          "streams": [ - 
            "6969696969697379736c6f67",
            "6969696969727379736c6f67"
          ],
          "elap_remote_port": 53090,
          "elap_source_node": "5bb5d963-7fdd-4e2d-bfdf-a5069bb07097",
          "source": "192.168.113.195",
          "elap_message_id": "01GXAVJH78H4GCQ44KNZQ1MQ0H",
          "message": "<5>Apr 6 16:40:17 root: zhongguoren 10",
          "elap_remote_ip": "192.168.113.195",
          "timestamp": "2023-04-06 08:40:17.895"
        },
        "sort": [ - 
          1680770417895,
          "a894bf71-d456-11ed-aa52-000c29f6b211"
        ]
      }
    ]
  }
}

4.Search after二次查询

可以根据sort值带入到后续得search after中,以做到从某点进行再次查询。

GET index_1/_search
{
  "size": 10,
  "query": {
    "match": {
      "message": "zhongguoren"
    }
  },
  "search_after": [
    1680770417895,
    "a894bf71-d456-11ed-aa52-000c29f6b211"
  ],
  "sort": [
    {
      "timestamp": "asc"
    },
    {
      "_id": "asc"
    }
  ]
}

返回结果中,得到11-20条数据。


总结

我也尝试过,直接从16条的sort字段值进行查询,同样可以查询到17-20的值,所以,我们可以进行改造,默认仍然是10000条的max_result_window,兼顾小批量数据的查询和搜索,当查询从66页往后时,每次翻页或者跳页我们要能获取到超过10000的最后一条信息的id和时间戳,由此解决es深度查询翻页的问题。

明天找产品聊聊实现逻辑。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/62194.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

K8s中的核心技术Helm

1.helm的引入 &#xff08;1&#xff09;编写yaml文件 &#xff08;2&#xff09;编写deployment文件 &#xff08;3&#xff09;编写service文件 &#xff08;4&#xff09;编写Ingress文件 2.helm的引入解决的问题&#xff1f; &#xff08;1&#xff09;使用helm可以把…

oracle 存储过程返回 结果集 table形式 (使用sys_refcursor 及程序包package 两种方式)

1.创建一个表Test用来测试. 1 CREATE TABLE "TEST" 2 ( "AAA" NUMBER(*,0), 3 "BBB" VARCHAR2(10 BYTE) 4 ) 2.向Test表中插入测试数据 1 insert into Test values(1,a); 2 insert into Test values(2,b); 3 insert into Test …

Arthas协助MQ消费性能优化

背景 项目中使用AWS的SQS消息队列进行异步处理&#xff0c;QA通过压测发现单机TPS在23左右&#xff0c;目标性能在500TPS&#xff0c;所以需要对消费逻辑进行优化&#xff0c;提升消费速度。 目标 消费TPS从23提升到500 优化流程 优化的思路是先分析定位性能瓶颈&#xff…

AD21 PCB设计的高级应用(九)3D PDF的输出

&#xff08;九&#xff09;3D PDF的输出 1.3D PDF的输出2.制作PCB 3D视频 1.3D PDF的输出 Altium Designer 19 带有 3D输出功能,能够直接将 PCB 的 3D效果输出到 PDF 中。 ’(1)打开带有 3D 模型的 PCB 文件,执行菜单栏中“文件”→“导出”→“PDF3D”命令&#xff0c;选择…

“我,在腾讯月薪5万,离职后才明白:人越努力,只会越平庸”

那天看瑞达利欧说&#xff0c;他今年已经60岁了&#xff0c;可以说是阅人无数&#xff0c;但没有一个成功人士天赋异禀。 真的如他所说吗&#xff1f; 那张一鸣呢&#xff1f; 字节做到这么大&#xff0c;赚了这么多钱&#xff0c;不靠天赋&#xff0c;靠的是什么&#xff1…

PoseFormer:基于视频的2D-to-3D单人姿态估计

3D Human Pose Estimation with Spatial and Temporal Transformers论文解析 摘要1. 简介2. Related Works2.1 2D-to-3D Lifting HPE2.2 GNNs in 3D HPE2.3 Vision Transformers 3. Method3.1 Temporal Transformer Baseline3.2 PoseFormer: Spatial-Temporal TransformerSpati…

Grafana集成prometheus(2.Grafana安装)

查找镜像 docker search grafana下载指定版本 docker pull grafana/grafana:10.0.1启动容器脚本 docker run -d -p 3000:3000 --namegrafana grafana/grafana:10.0.1查看是否启动 docker ps防火墙开启 检查防火墙3000端口是否开启 默认用户及密码 admin/admin 登录 ht…

Python实现GA遗传算法优化BP神经网络回归模型(BP神经网络回归算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 遗传算法&#xff08;Genetic Algorithm&#xff0c;GA&#xff09;最早是由美国的 John holland于20世…

【0805作业】Linux中 AB终端通过两根有名管道进行通信聊天(半双工)(全双工)

作业一&#xff1a;打开两个终端&#xff0c;要求实现AB进程对话【两根管道】 打开两个终端&#xff0c;要求实现AB进程对话 A进程先发送一句话给B进程&#xff0c;B进程接收后打印B进程再回复一句话给A进程&#xff0c;A进程接收后打印重复1.2步骤&#xff0c;当收到quit后&am…

【Docker】DockerFile

目录 一、镜像原理 二、如何制作镜像 1、容器转镜像 2、DockerFile 三、DockerFile关键字​编辑 四、案例&#xff1a;部署SpringBoot项目 一、镜像原理 docker镜像是由一个特殊的文件系统叠加而成的&#xff0c;他的最低端是bootfs&#xff0c;并使用宿主机的bootfs&…

FPGA优质开源项目 – PCIE通信

本文介绍一个FPGA开源项目&#xff1a;PCIE通信。该工程围绕Vivado软件中提供的PCIE通信IP核XDMA IP建立。Xilinx提供了XDMA的开源驱动程序&#xff0c;可在Windows系统或者Linux系统下使用&#xff0c;因此采用XDMA IP进行PCIE通信是比较简单直接的。 本文主要介绍一下XDMA I…

继承(Inheritance)

Odoo的一个强大方面是它的模块化。模块专用于业务需求&#xff0c;但模块也可以相互交互。这对于扩展现有模块的功能非常有用。例如&#xff0c;在我们的房地产场景中&#xff0c;我们希望在常规用户视图中直接显示销售人员的财产列表。 在介绍特定的Odoo模块继承之前&#xf…

卸载本机已安装的node.js(v.16.13.0版本)

因为要用多版本的node&#xff0c;准备安装一个nvm管理&#xff0c;所以需要先卸载掉原来安装的v.16.13.0版本。 记录一下卸载过程 1、在系统设置-应用里卸载node 妈蛋这样卸载报错。。找了下根本没有这个路径 那就只能最简单的方法了&#xff0c;全部删掉 1、删除node的安装…

pygame贪吃蛇游戏

pygame贪吃蛇游戏 贪吃蛇游戏通过enter键启动&#xff0c;贪吃蛇通过WSAD进行上下左右移动&#xff0c;每次在游戏区域中随机生成一个食物&#xff0c;每次吃完食物后&#xff0c;蛇变长并且获得积分&#xff1b;按空格键暂停。 贪吃蛇 import random, sys, time, pygame from …

[CKA]考试之PersistentVolumeClaims

由于最新的CKA考试改版&#xff0c;不允许存储书签&#xff0c;本博客致力怎么一步步从官网把答案找到&#xff0c;如何修改把题做对&#xff0c;下面开始我们的 CKA之旅 题目为&#xff1a; Task 创建一个名字为pv-volume的pvc&#xff0c;指定storageClass为csi-hostpath-…

大模型使用——超算上部署LLAMA-2-70B-Chat

大模型使用——超算上部署LLAMA-2-70B-Chat 前言 1、本机为Inspiron 5005&#xff0c;为64位&#xff0c;所用操作系统为Windos 10。超算的操作系统为基于Centos的linux&#xff0c;GPU配置为A100&#xff0c;所使用开发环境为Anaconda。 2、本教程主要实现了在超算上部署LLAM…

MySQL — InnoDB事务

文章目录 事务定义事务特性事务隔离级别READ UNCOMMITTEDREPEATABLE READREAD COMMITTEDSERIALIZABLE 事务存在的问题脏读&#xff08;Dirty Read&#xff09;不可重复读&#xff08;Non-repeatable Read&#xff09;幻读&#xff08;Phantom Read&#xff09; 事务定义 数据库…

零代码爬虫平台SpiderFlow的安装

什么是 Spider Flow &#xff1f; Spider Flow 是一个高度灵活可配置的爬虫平台&#xff0c;用户无需编写代码&#xff0c;以流程图的方式&#xff0c;即可实现爬虫。该工具支持多数据源、自动保存至数据库、任务监控、抓取 JS 动态渲染页面、插件扩展&#xff08;OCR 识别、邮…

Windows下安装Scala(以Scala 2.11.12为例)

Windows下安装Scala&#xff08;以Scala 2.11.12为例&#xff09; 一、Scala2.11.12官网下载二、Scala2.11.12网盘下载三、Scala各版本下载地址四、Scala安装4.1、点击 scala-2.11.12.msi 文件安装4.2、设置环境变量 %SCALA_HOME%4.3、环境变量Path添加条目%SCALA_HOME%\bin 四…

【云原生】使用kubeadm搭建K8S

目录 一、Kubeadm搭建K8S1.1环境准备1.2所有节点安装docker1.3所有节点安装kubeadm&#xff0c;kubelet和kubectl1.4部署K8S集群1.5所有节点部署网络插件flannel 二、部署 Dashboard 一、Kubeadm搭建K8S 1.1环境准备 服务器IP配置master&#xff08;2C/4G&#xff0c;cpu核心…
最新文章