ES 10000条限制解决方案

简介: ES 10000条限制解决方案

修改索引的最大查询数量

不推荐使用该方案,因为治标不治本,虽然可以超过1W条,但是当数据量特别大的时候会直接报错。

PUT your_index_name

{

 "settings": {

   "max_result_window": "100000"

 }

}


Scroll滚动查询

底层原理是快照,可以用于超过1W条导出的场景。

#scroll 快照数据不具备实时性 不支持跳页 每一个页面对应一个scroll_ID 可以用于导出

#scroll查询

GET analert/_search?scroll=5m

{

 "from": 0,

 "size": 10000,

 "query": {

   "match_all": {}

 }

}


#scroll历史数据

GET _search/scroll

{

 "scroll_id" : "DnF1ZXJ5VGhlbkZldGNoBQAAAAAAEOE4Fll4RUxFSmpVU0VTamFoWVpKMGYwR3cAAAAAABDhOhZZeEVMRUpqVVNFU2phaFlaSjBmMEd3AAAAAAAQ4TkWWXhFTEVKalVTRVNqYWhZWkowZjBHdwAAAAAAEOE7Fll4RUxFSmpVU0VTamFoWVpKMGYwR3cAAAAAABDhNxZZeEVMRUpqVVNFU2phaFlaSjBmMEd3",

 "scroll" : "5m"

}


SearchAfter深度分页查询

底层原理是游标,作用于1W条数据之后深度分页下的实时查询,比较推荐。

#search after 深度分页 无法跳页请求,索引有实时的增删改可以快速查阅

#每次修改查询条件之后需要重新查询1000条

#需要维护一个 search_after ID

GET analert/_search

{

 "from": 0,

 "size": 999,

 "query": {

   "match_all": {}

 },

 "sort": [

   {

     "_id": {

       "order": "desc"

     }

   }

 ]

}


#search after实时数据

GET analert/_search

{

 "from": 0,

 "size": 1000,

 "query": {

   "match_all": {}

 },

 "search_after": ["zB7MKIgBnVHJ1eC2Vl9S"],

 "sort": [

   {

     "_id": {

       "order": "desc"

     }

   }

 ]

}


不能够修改query查询条件,不能够修改页数

存在的问题 : size * total 大小超过1W条,


最终落地接口设计

请求方式: POST请求

接口地址: xxx/xxx


入参: 请求体 JSON类型

{

   "page": 1000,

   "limit": 10,

   "searchTimeType": "week",

   "pageSearchAfterMap": {},

   "lastSearchAfter": [],

   "nextSearchAfter": [],

   "pageAction": "skip"

}


返参:

{

   "msg": "",

   "code": "0",

   "pageSearchAfterMap": {

       "1001": [

           1684722949,

           "695QQYgBnVHJ1eC2PpZF"

       ]

   },

   "lastSearchAfter": [],

   "data": [

       {

           "id": "6N5QQYgBnVHJ1eC2Wsfu",

           "srcIp": "4.41.51.216",

           "area": "US-美国",

           "alertTime": "2023-05-22 10:35:49",

           "destIp": "2.2.2.2",

           "repeatNum": "1",

           "successRepeatNum": "1",

           "eventName": "SYNFLOOD攻击",

           "deviceId": "1"

       },

       {

           "id": "6N5QQYgBnVHJ1eC2Wsbu",

           "srcIp": "4.41.51.216",

           "area": "US-美国",

           "alertTime": "2023-05-22 10:35:49",

           "destIp": "2.2.2.2",

           "repeatNum": "1",

           "successRepeatNum": "1",

           "eventName": "SYNFLOOD攻击",

           "deviceId": "1"

       },

       {

           "id": "6N5QQYgBnVHJ1eC2PpZF",

           "srcIp": "4.41.51.216",

           "area": "US-美国",

           "alertTime": "2023-05-22 10:35:49",

           "destIp": "2.2.2.2",

           "repeatNum": "1",

           "successRepeatNum": "1",

           "eventName": "SYNFLOOD攻击",

           "deviceId": "1"

       },

       {

           "id": "6N5QQYgBnVHJ1eC2PpVE",

           "srcIp": "4.41.51.216",

           "area": "US-美国",

           "alertTime": "2023-05-22 10:35:49",

           "destIp": "2.2.2.2",

           "repeatNum": "1",

           "successRepeatNum": "1",

           "eventName": "SYNFLOOD攻击",

           "deviceId": "1"

       },

       {

           "id": "6N5QQYgBnVHJ1eC2PpRE",

           "srcIp": "4.41.51.216",

           "area": "US-美国",

           "alertTime": "2023-05-22 10:35:49",

           "destIp": "2.2.2.2",

           "repeatNum": "1",

           "successRepeatNum": "1",

           "eventName": "SYNFLOOD攻击",

           "deviceId": "1"

       },

       {

           "id": "6N5QQYgBnVHJ1eC2PpNE",

           "srcIp": "4.41.51.216",

           "area": "US-美国",

           "alertTime": "2023-05-22 10:35:49",

           "destIp": "2.2.2.2",

           "repeatNum": "1",

           "successRepeatNum": "1",

           "eventName": "SYNFLOOD攻击",

           "deviceId": "1"

       },

       {

           "id": "6N5QQYgBnVHJ1eC2PpJE",

           "srcIp": "4.41.51.216",

           "area": "US-美国",

           "alertTime": "2023-05-22 10:35:49",

           "destIp": "2.2.2.2",

           "repeatNum": "1",

           "successRepeatNum": "1",

           "eventName": "SYNFLOOD攻击",

           "deviceId": "1"

       },

       {

           "id": "695QQYgBnVHJ1eC2Wsfu",

           "srcIp": "4.41.51.216",

           "area": "US-美国",

           "alertTime": "2023-05-22 10:35:49",

           "destIp": "2.2.2.2",

           "repeatNum": "1",

           "successRepeatNum": "1",

           "eventName": "SYNFLOOD攻击",

           "deviceId": "1"

       },

       {

           "id": "695QQYgBnVHJ1eC2Wsbu",

           "srcIp": "4.41.51.216",

           "area": "US-美国",

           "alertTime": "2023-05-22 10:35:49",

           "destIp": "2.2.2.2",

           "repeatNum": "1",

           "successRepeatNum": "1",

           "eventName": "SYNFLOOD攻击",

           "deviceId": "1"

       },

       {

           "id": "695QQYgBnVHJ1eC2PpZF",

           "srcIp": "4.41.51.216",

           "area": "US-美国",

           "alertTime": "2023-05-22 10:35:49",

           "destIp": "2.2.2.2",

           "repeatNum": "1",

           "successRepeatNum": "1",

           "eventName": "SYNFLOOD攻击",

           "deviceId": "1"

       }

   ],

   "count": 57003,

   "nextSearchAfter": [

       1684722949,

       "695QQYgBnVHJ1eC2PpZF"

   ]

}


第二次入参

{

   "page": 1001,

   "limit": 10,

   "searchTimeType": "week",

   "pageSearchAfterMap": {

       "1001": [

           1684722949,

           "695QQYgBnVHJ1eC2PpZF"

       ]

   },

   "lastSearchAfter": [],

   "nextSearchAfter": [

       1684722949,

       "695QQYgBnVHJ1eC2PpZF"

   ],

   "pageAction": "page-after"

}


第二次返参

{

   "msg": "",

   "code": "0",

   "pageSearchAfterMap": {

       "1002": [

           1684722949,

           "5t5QQYgBnVHJ1eC2PpNE"

       ],

       "1001": [

           1684722949,

           "695QQYgBnVHJ1eC2PpZF"

       ]

   },

   "lastSearchAfter": [

       1684722949,

       "695QQYgBnVHJ1eC2PpZF"

   ],

   "data": [

       {

           "id": "695QQYgBnVHJ1eC2PpVE",

           "srcIp": "4.41.51.216",

           "area": "US-美国",

           "alertTime": "2023-05-22 10:35:49",

           "destIp": "2.2.2.2",

           "repeatNum": "1",

           "successRepeatNum": "1",

           "eventName": "SYNFLOOD攻击",

           "deviceId": "1"

       },

       {

           "id": "695QQYgBnVHJ1eC2PpRE",

           "srcIp": "4.41.51.216",

           "area": "US-美国",

           "alertTime": "2023-05-22 10:35:49",

           "destIp": "2.2.2.2",

           "repeatNum": "1",

           "successRepeatNum": "1",

           "eventName": "SYNFLOOD攻击",

           "deviceId": "1"

       },

       {

           "id": "695QQYgBnVHJ1eC2PpNE",

           "srcIp": "4.41.51.216",

           "area": "US-美国",

           "alertTime": "2023-05-22 10:35:49",

           "destIp": "2.2.2.2",

           "repeatNum": "1",

           "successRepeatNum": "1",

           "eventName": "SYNFLOOD攻击",

           "deviceId": "1"

       },

       {

           "id": "695QQYgBnVHJ1eC2PpJE",

           "srcIp": "4.41.51.216",

           "area": "US-美国",

           "alertTime": "2023-05-22 10:35:49",

           "destIp": "2.2.2.2",

           "repeatNum": "1",

           "successRepeatNum": "1",

           "eventName": "SYNFLOOD攻击",

           "deviceId": "1"

       },

       {

           "id": "5t5QQYgBnVHJ1eC2Wsfu",

           "srcIp": "4.41.51.216",

           "area": "US-美国",

           "alertTime": "2023-05-22 10:35:49",

           "destIp": "2.2.2.2",

           "repeatNum": "1",

           "successRepeatNum": "1",

           "eventName": "SYNFLOOD攻击",

           "deviceId": "1"

       },

       {

           "id": "5t5QQYgBnVHJ1eC2Wsbu",

           "srcIp": "4.41.51.216",

           "area": "US-美国",

           "alertTime": "2023-05-22 10:35:49",

           "destIp": "2.2.2.2",

           "repeatNum": "1",

           "successRepeatNum": "1",

           "eventName": "SYNFLOOD攻击",

           "deviceId": "1"

       },

       {

           "id": "5t5QQYgBnVHJ1eC2PpZF",

           "srcIp": "4.41.51.216",

           "area": "US-美国",

           "alertTime": "2023-05-22 10:35:49",

           "destIp": "2.2.2.2",

           "repeatNum": "1",

           "successRepeatNum": "1",

           "eventName": "SYNFLOOD攻击",

           "deviceId": "1"

       },

       {

           "id": "5t5QQYgBnVHJ1eC2PpVE",

           "srcIp": "4.41.51.216",

           "area": "US-美国",

           "alertTime": "2023-05-22 10:35:49",

           "destIp": "2.2.2.2",

           "repeatNum": "1",

           "successRepeatNum": "1",

           "eventName": "SYNFLOOD攻击",

           "deviceId": "1"

       },

       {

           "id": "5t5QQYgBnVHJ1eC2PpRE",

           "srcIp": "4.41.51.216",

           "area": "US-美国",

           "alertTime": "2023-05-22 10:35:49",

           "destIp": "2.2.2.2",

           "repeatNum": "1",

           "successRepeatNum": "1",

           "eventName": "SYNFLOOD攻击",

           "deviceId": "1"

       },

       {

           "id": "5t5QQYgBnVHJ1eC2PpNE",

           "srcIp": "4.41.51.216",

           "area": "US-美国",

           "alertTime": "2023-05-22 10:35:49",

           "destIp": "2.2.2.2",

           "repeatNum": "1",

           "successRepeatNum": "1",

           "eventName": "SYNFLOOD攻击",

           "deviceId": "1"

       }

   ],

   "count": 57003,

   "nextSearchAfter": [

       1684722949,

       "5t5QQYgBnVHJ1eC2PpNE"

   ]

}


第三次入参

{

   "page": 1002,

   "limit": 10,

   "searchTimeType": "week",

   "pageSearchAfterMap": {

       "1001": [

           1684722949,

           "695QQYgBnVHJ1eC2PpZF"

       ],

       "1002": [

           1684722949,

           "5t5QQYgBnVHJ1eC2PpNE"

       ]

   },

   "lastSearchAfter": [

       1684722949,

       "695QQYgBnVHJ1eC2PpZF"

   ],

   "nextSearchAfter": [

       1684722949,

       "5t5QQYgBnVHJ1eC2PpNE"

   ],

   "pageAction": "page-after",

   "_": 1684826142153,

   "nonce": 48146043,

   "sign": "fb5469d67b6a7c208f9604b4862f6c6b"

}


第三次返参

{

   "msg": "",

   "code": "0",

   "pageSearchAfterMap": {

       "1003": [

           1684722949,

           "5N5QQYgBnVHJ1eC2Wsbu"

       ],

       "1002": [

           1684722949,

           "5t5QQYgBnVHJ1eC2PpNE"

       ],

       "1001": [

           1684722949,

           "695QQYgBnVHJ1eC2PpZF"

       ]

   },

   "lastSearchAfter": [

       1684722949,

       "5t5QQYgBnVHJ1eC2PpNE"

   ],

   "data": [

       {

           "id": "5t5QQYgBnVHJ1eC2PpJE",

           "srcIp": "4.41.51.216",

           "area": "US-美国",

           "alertTime": "2023-05-22 10:35:49",

           "destIp": "2.2.2.2",

           "repeatNum": "1",

           "successRepeatNum": "1",

           "eventName": "SYNFLOOD攻击",

           "deviceId": "1"

       },

       {

           "id": "5d5QQYgBnVHJ1eC2Wsfu",

           "srcIp": "4.41.51.216",

           "area": "US-美国",

           "alertTime": "2023-05-22 10:35:49",

           "destIp": "2.2.2.2",

           "repeatNum": "1",

           "successRepeatNum": "1",

           "eventName": "SYNFLOOD攻击",

           "deviceId": "1"

       },

       {

           "id": "5d5QQYgBnVHJ1eC2Wsbu",

           "srcIp": "4.41.51.216",

           "area": "US-美国",

           "alertTime": "2023-05-22 10:35:49",

           "destIp": "2.2.2.2",

           "repeatNum": "1",

           "successRepeatNum": "1",

           "eventName": "SYNFLOOD攻击",

           "deviceId": "1"

       },

       {

           "id": "5d5QQYgBnVHJ1eC2PpZF",

           "srcIp": "4.41.51.216",

           "area": "US-美国",

           "alertTime": "2023-05-22 10:35:49",

           "destIp": "2.2.2.2",

           "repeatNum": "1",

           "successRepeatNum": "1",

           "eventName": "SYNFLOOD攻击",

           "deviceId": "1"

       },

       {

           "id": "5d5QQYgBnVHJ1eC2PpVE",

           "srcIp": "4.41.51.216",

           "area": "US-美国",

           "alertTime": "2023-05-22 10:35:49",

           "destIp": "2.2.2.2",

           "repeatNum": "1",

           "successRepeatNum": "1",

           "eventName": "SYNFLOOD攻击",

           "deviceId": "1"

       },

       {

           "id": "5d5QQYgBnVHJ1eC2PpRE",

           "srcIp": "4.41.51.216",

           "area": "US-美国",

           "alertTime": "2023-05-22 10:35:49",

           "destIp": "2.2.2.2",

           "repeatNum": "1",

           "successRepeatNum": "1",

           "eventName": "SYNFLOOD攻击",

           "deviceId": "1"

       },

       {

           "id": "5d5QQYgBnVHJ1eC2PpNE",

           "srcIp": "4.41.51.216",

           "area": "US-美国",

           "alertTime": "2023-05-22 10:35:49",

           "destIp": "2.2.2.2",

           "repeatNum": "1",

           "successRepeatNum": "1",

           "eventName": "SYNFLOOD攻击",

           "deviceId": "1"

       },

       {

           "id": "5d5QQYgBnVHJ1eC2PpJE",

           "srcIp": "4.41.51.216",

           "area": "US-美国",

           "alertTime": "2023-05-22 10:35:49",

           "destIp": "2.2.2.2",

           "repeatNum": "1",

           "successRepeatNum": "1",

           "eventName": "SYNFLOOD攻击",

           "deviceId": "1"

       },

       {

           "id": "5N5QQYgBnVHJ1eC2Wsfu",

           "srcIp": "4.41.51.216",

           "area": "US-美国",

           "alertTime": "2023-05-22 10:35:49",

           "destIp": "2.2.2.2",

           "repeatNum": "1",

           "successRepeatNum": "1",

           "eventName": "SYNFLOOD攻击",

           "deviceId": "1"

       },

       {

           "id": "5N5QQYgBnVHJ1eC2Wsbu",

           "srcIp": "4.41.51.216",

           "area": "US-美国",

           "alertTime": "2023-05-22 10:35:49",

           "destIp": "2.2.2.2",

           "repeatNum": "1",

           "successRepeatNum": "1",

           "eventName": "SYNFLOOD攻击",

           "deviceId": "1"

       }

   ],

   "count": 57003,

   "nextSearchAfter": [

       1684722949,

       "5N5QQYgBnVHJ1eC2Wsbu"

   ]

}


方案点评

该方案其实比较适合滚动查询的场景,比如说淘宝这种可以一直向下滚动的电商网站,或者当作一个临时方案来进行使用,在之后我们可以加入其他组件,比如Hbase使用rowkey关联的场景来查询其他更多的超过一万条的数据。

目录
相关文章
|
6月前
|
JavaScript 小程序 Java
ES6使用实践总结
ES6使用实践总结
43 0
|
前端开发 API
ES 高级实战(四)查询 ES 数据
ES 高级实战(四)查询 ES 数据
1380 0
ES 高级实战(四)查询 ES 数据
|
2月前
|
自然语言处理 JavaScript 前端开发
ES6 函数及拓展
ES6 函数及拓展
107 58
|
6月前
|
前端开发
平台设计-moduleID的使用
整个平台上有很多相同的功能
|
Docker 容器
es应用笔记1-es部署
es应用笔记1-es部署
113 0
|
存储 JSON 自然语言处理
ES基础
ES基础
483 0
|
Java
easy-rules规则引擎最佳落地实践
写作目的 这是一个头部互联网公司中的一个问题。因为有很多业务产品线,作为一个新人或者团队外的人员是很难区分不同的产品线之间的区别的,因此需要给某个产品线一个描述。但是随着业务的发展,产品线下可能又根据某个字段进一步划分,那么子产品线就是父产品线 + 字段 去区分。后面根据两个字段划分…。人都麻了。因为不同的组合有不同的链路。因此针对一个产品,我们要提供针对这个产品的具体规则描述,从而减少答疑。
941 0
easy-rules规则引擎最佳落地实践
|
前端开发 JavaScript 计算机视觉
Module Federation最佳实践
Module Federation[1]官方称为模块联邦,模块联邦是webpack5支持的一个最新特性,多个独立构建的应用,可以组成一个应用,这些独立的应用不存在依赖关系,可以独立部署,官方称为微前端。
625 0
Module Federation最佳实践
|
存储 JavaScript 前端开发
es6基础(1)
es6基础(1)
121 0
es6基础(1)
|
JavaScript 前端开发 网络架构
【ES6】函数的拓展
【ES6】函数的拓展