首页 > 其他分享 >60_初识搜索引擎_上机动手实战基于scoll技术滚动搜索大量数据

60_初识搜索引擎_上机动手实战基于scoll技术滚动搜索大量数据

时间:2024-10-02 13:02:15浏览次数:5  
标签:index scoll 60 初识 搜索 test type id

如果一次性要查出来比如10万条数据,那么性能会很差,此时一般会采取用scoll滚动查询,一批一批的查,直到所有数据都查询完处理完

使用scoll滚动搜索,可以先搜索一批数据,然后下次再搜索一批数据,以此类推,直到搜索出全部的数据来
scoll搜索会在第一次搜索的时候,保存一个当时的视图快照,之后只会基于该旧的视图快照提供数据搜索,如果这个期间数据变更,是不会让用户看到的
采用基于_doc进行排序的方式,性能较高
每次发送scroll请求,我们还需要指定一个scoll参数,指定一个时间窗口,每次搜索请求只要在这个时间窗口内能完成就可以了

GET /test_index/test_type/_search?scroll=1m
{
"query": {
"match_all": {}
},
"sort": [ "_doc" ],
"size": 3
}

{
"_scroll_id": "DnF1ZXJ5VGhlbkZldGNoBQAAAAAAACxeFjRvbnNUWVZaVGpHdklqOV9zcFd6MncAAAAAAAAsYBY0b25zVFlWWlRqR3ZJajlfc3BXejJ3AAAAAAAALF8WNG9uc1RZVlpUakd2SWo5X3NwV3oydwAAAAAAACxhFjRvbnNUWVZaVGpHdklqOV9zcFd6MncAAAAAAAAsYhY0b25zVFlWWlRqR3ZJajlfc3BXejJ3",
"took": 5,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 10,
"max_score": null,
"hits": [
{
"_index": "test_index",
"_type": "test_type",
"_id": "8",
"_score": null,
"_source": {
"test_field": "test client 2"
},
"sort": [
0
]
},
{
"_index": "test_index",
"_type": "test_type",
"_id": "6",
"_score": null,
"_source": {
"test_field": "tes test"
},
"sort": [
0
]
},
{
"_index": "test_index",
"_type": "test_type",
"_id": "AVp4RN0bhjxldOOnBxaE",
"_score": null,
"_source": {
"test_content": "my test"
},
"sort": [
0
]
}
]
}
}

获得的结果会有一个scoll_id,下一次再发送scoll请求的时候,必须带上这个scoll_id

GET /_search/scroll
{
"scroll": "1m",
"scroll_id" : "DnF1ZXJ5VGhlbkZldGNoBQAAAAAAACxeFjRvbnNUWVZaVGpHdklqOV9zcFd6MncAAAAAAAAsYBY0b25zVFlWWlRqR3ZJajlfc3BXejJ3AAAAAAAALF8WNG9uc1RZVlpUakd2SWo5X3NwV3oydwAAAAAAACxhFjRvbnNUWVZaVGpHdklqOV9zcFd6MncAAAAAAAAsYhY0b25zVFlWWlRqR3ZJajlfc3BXejJ3"
}

11,4,7
3,2,1
20

scoll,看起来挺像分页的,但是其实使用场景不一样。分页主要是用来一页一页搜索,给用户看的;scoll主要是用来一批一批检索数据,让系统进行处理的

标签:index,scoll,60,初识,搜索,test,type,id
From: https://www.cnblogs.com/siben/p/18444587

相关文章

  • 59_初识搜索引擎_搜索相关参数梳理以及bouncing results问题解决方案
    1、preference决定了哪些shard会被用来执行搜索操作_primary,_primary_first,_local,_only_node:xyz,_prefer_node:xyz,_shards:2,3bouncingresults问题,两个document排序,field值相同;不同的shard上,可能排序不同;每次请求轮询打到不同的replicashard上;每次页面上看到的搜索......
  • pbootcms后台出现"登录失败:登录失败次数太多已被锁定,请600s重试!" 情况,怎么办?
    当在PBootCMS后台出现“登录失败:登录失败次数太多已被锁定,请600s重试!”的情况时,这通常是由于多次尝试错误密码导致的账户锁定。解决这个问题的方法如下:解决方法删除 runtime 文件夹:打开你的网站根目录。找到 runtime 文件夹并删除它。通常路径为:/www/wwwroot/you......
  • 36_初识搜索引擎_分页搜索以及deep paging性能问题深度图解揭秘
    课程大纲1、讲解如何使用es进行分页搜索的语法size,fromGET/_search?size=10GET/_search?size=10&from=0GET/_search?size=10&from=20分页的上机实验GET/test_index/test_type/_search"hits":{"total":9,"max_score":1,我们假设将这9条数据分成3页,每一页是3条数......
  • 38_初识搜索引擎_用一个例子告诉你mapping到底是什么
    插入几条数据,让es自动为我们建立一个索引PUT/website/article/1{"post_date":"2017-01-01","title":"myfirstarticle","content":"thisismyfirstarticleinthiswebsite","author_id":11400}PUT/w......
  • 37_初识搜索引擎_快速掌握query string search语法以及_all metadata原理揭秘
    1、querystring基础语法GET/test_index/test_type/_search?q=test_field:testGET/test_index/test_type/_search?q=+test_field:testGET/test_index/test_type/_search?q=-test_field:test一个是掌握q=field:searchcontent的语法,还有一个是掌握+和-的含义2、_allmetada......
  • 34_初识搜索引擎_search结果深入解析(search timeout机制揭秘)
    课程大纲1、我们如果发出一个搜索请求的话,会拿到一堆搜索结果,本节课,我们来讲解一下,这个搜索结果里的各种数据,都代表了什么含义2、我们来讲解一下,搜索的timeout机制,底层的原理,画图讲解GET/_search{"took":6,"timed_out":false,"_shards":{"total":6,"successful":6,......
  • 35_初识搜索引擎_multi-index&multi-type搜索模式解析以及搜索原理初步图解
    课程大纲1、multi-index和multi-type搜索模式告诉你如何一次性搜索多个index和多个type下的数据/_search:所有索引,所有type下的所有数据都搜索出来/index1/_search:指定一个index,搜索其下所有type的数据/index1,index2/_search:同时搜索两个index下的数据/1,2/_search:按照通配......
  • CUDIMM DDR5内存突然爆火!七彩虹上来就是9600MHz
    最近,本土内存品牌突然集体发力CUDIMMDDR5内存,全何、佰维、阿斯加特纷纷发布新品,频率一个比一个高,现在七彩虹也加入了战局。七彩虹首款CDUIMMDDR5内存采用SK海力士原厂颗粒,单条容量24GB,频率高达9600MHz,时序为CL44-56-56-154,和阿斯加特的一模一样。佰维和全何的频率都是9200MHz,......
  • 初识C语言
    C语言人机交互的一门语言 一刚发明计算机时人们普遍用着二进制语言也就是0和1的组合,那时的人们要编程,要翻书对应其数字0和1代表的意义,后来人们将一些常见的0和1写成助记符于是就形成了汇编语言,然而汇编语言仍然不够省事,于是人们苦思冥想,想出了编译器这一转折性的app,人们......
  • 鹏哥C语言59-60---三子棋游戏
    //------------------------------------------------------5. 数组实现(游戏)-----------------------------------------//----------------------------------------------------5.1利用数组实现三子棋----------------------------------------//分块 test.c  ......