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关联的场景来查询其他更多的超过一万条的数据。

目录
相关文章
|
5月前
|
JavaScript 小程序 Java
ES6使用实践总结
ES6使用实践总结
15 0
|
前端开发 API
ES 高级实战(四)查询 ES 数据
ES 高级实战(四)查询 ES 数据
1269 0
ES 高级实战(四)查询 ES 数据
|
13天前
|
前端开发
平台设计-moduleID的使用
整个平台上有很多相同的功能
|
11月前
|
Docker 容器
es应用笔记1-es部署
es应用笔记1-es部署
82 0
|
12月前
|
存储 JSON 自然语言处理
ES基础
ES基础
417 0
|
12月前
|
存储 机器学习/深度学习 数据采集
基于ES在慢病项目中的应用
ES在慢性病管理项目中的应用
191 0
|
JavaScript 前端开发 网络架构
【ES6】函数的拓展
【ES6】函数的拓展
|
存储 JavaScript 前端开发
es6基础(1)
es6基础(1)
93 0
es6基础(1)
|
Web App开发 自然语言处理 JavaScript
ES6之路之模块详解
一个模块只不过是一个写在文件中的 JavaScript 代码块。
106 0
|
监控 前端开发 JavaScript
聊聊ES7与ES8特性
我曾写过一篇关于ES6博客《10个最佳ES6特性》,这次我打算聊聊ES7和 ES8特性。 ES7只有2个特性: • includes() • 指数操作符 ES8尚未发布(2017年1月),下面是它已经完成起草的一些特性: • Object.values() • Object.entries() • padStart() • padEnd() • Object.getOwnPropertyDescriptors() • 函数参数列表结尾允许逗号 • Async/Await
431 0