当前位置: 首页 > news >正文

哈尔滨搭建网站手机查看别人网站代码吗

哈尔滨搭建网站,手机查看别人网站代码吗,科技类网站简介怎么做,南京做网站南京乐识专心Elasticsearch8.17.0在mac上的安装 Kibana8.17.0在mac上的安装 Elasticsearch检索方案之一#xff1a;使用fromsize实现分页 1、滚动查询的使用场景 滚动查询区别于上一篇文章介绍的使用from、size分页检索#xff0c;最大的特点是#xff0c;它能够检索超过10000条外的…Elasticsearch8.17.0在mac上的安装 Kibana8.17.0在mac上的安装 Elasticsearch检索方案之一使用fromsize实现分页 1、滚动查询的使用场景 滚动查询区别于上一篇文章介绍的使用from、size分页检索最大的特点是它能够检索超过10000条外的所有文档可以理解为是一种全量检索的技术方案也正是因为这种特性使得滚动查询的代价非常高昂检索过程消耗大量的内存所以对于实时检索的场景滚动查询是不适用的。 那滚动查询使用在什么场景呢主要是应用在离线、检索全量数据对于实时性要求不高的场景比如一个数据平台前台页面展示的数据用来预览可以使用fromsize分页查询以提升检索效率以及平台的用户体验如果还需要检索全量数据用于二次使用那么后台离线检索全量就需要使用滚动查询以获取到全量数据这将是一个耗费大量资源和时间的过程。 2、使用Kibana直观体验滚动查询 初始化滚动查询 GET /new_tag_202411/_search?scroll1m {size: 10,sort:[{doc_id:{order: asc}}] } 检索条件设置返回2条数据按【doc_id】字段升序排列doc_id分别为1-10的文档。 scroll1m表示Elasticsearch允许等待的最长时间是1分钟如果在一分钟之内接下来的 scroll 请求没有到达的话那么当前请求的上下文将会失效 从上图返回可以看出有一个【_scroll_id】字段这个字段非常重要接下来的滚动查询需要使用这个字段 第一次滚动返回doc_id从11开始的数据第二次滚动时需要使用第一次滚动返回的【_scroll_id】替换滚动请求数据从doc_id为21的数据开始返回之后循环这个过程直到检索到全部数据。 注意一点在测试过程中我创建了多次滚动查询发现scrool_id特别像大家别误以为scrool_id没变比如以下三个scrool_id每个id只有3个字符不一样 FGluY2x1ZGVfY29udGV4dF91dWlkDXF1ZXJ5QW5kRmV0Y2gBFng3akdDTWthVFZLVTE0ODhLdGdaR1EAAAAAAAAWbhZZZEloTnlyU1FGaTgxQV9QR1pXTUdR FGluY2x1ZGVfY29udGV4dF91dWlkDXF1ZXJ5QW5kRmV0Y2gBFng3akdDTWthVFZLVTE0ODhLdGdaR1EAAAAAAAActhZZZEloTnlyU1FGaTgxQV9QR1pXTUdR FGluY2x1ZGVfY29udGV4dF91dWlkDXF1ZXJ5QW5kRmV0Y2gBFng3akdDTWthVFZLVTE0ODhLdGdaR1EAAAAAAAAjDxZZZEloTnlyU1FGaTgxQV9QR1pXTUdR 3、代码实现滚动查询(golang) 首先是初始化一个滚动查询 res, err : client.Search(client.Search.WithIndex(new_tag_202411),client.Search.WithBody(strings.NewReader(dslQuery.BuildJson())),client.Search.WithScroll(time.Minute*1), ) 这行代码 client.Search.WithScroll(time.Minute*1) 就是在设置滚动查询上下文的有效时间其他几行很容易理解。 这几行代码执行完成后除了能拿到检索数据还能拿到scroll_id。之后就可以进行滚动查询 for {docs Documents{}res, err client.Scroll(client.Scroll.WithScrollID(scrollId),client.Scroll.WithScroll(time.Minute),)if err ! nil {fmt.Println(scroll err:, err.Error())return}err json.NewDecoder(res.Body).Decode(docs)if err ! nil {fmt.Println(json decode err:, err)return}if len(docs.Hits.Hits) 0 {break}fmt.Println(search count:, len(docs.Hits.Hits))scrollId docs.ScrollID } 这里要注意的一点是循环滚动时每个轮次必须更新scrool_id为上一次滚动返回的值如上面最后一行代码。 L17-L19行的代码表示已经查出所有数据本次没有数据了同时循环结束。 4、一个必须要考虑的问题 对于滚动查询前面也说过会创建一个上下文当es中存在的上下文数量超过一定限制后将无法再次创建滚动查询从而无法检索数据这个【限制】es默认是500个我们可以通过es的api查看当前系统中已经创建的上下文数量 GET /_nodes/stats/indices/search 默认情况下只要【open_contexts】值小于500都能正常进行滚动查询如果已经创建了500个上下文就会出现问题下面测试一下利用代码创建500个上下文 如上图上下文已经创建500个运行代码再次执行滚动查询的动作 无法查出任何数据但是以下代码也无任何的报错 res, err : client.Search(client.Search.WithIndex(new_tag_202411),client.Search.WithBody(strings.NewReader(dslQuery.BuildJson())),client.Search.WithScroll(time.Minute*100), ) if err ! nil {fmt.Println(search err:, err.Error())return } 没有走到err分支经过调试发现res的结构中的http状态码变了我们加一行打印 res, err : client.Search(client.Search.WithIndex(new_tag_202411),client.Search.WithBody(strings.NewReader(dslQuery.BuildJson())),client.Search.WithScroll(time.Minute*100),)if err ! nil {fmt.Println(search err:, err.Error())return}fmt.Println(resp code:, res.StatusCode)err json.NewDecoder(res.Body).Decode(docs)if err ! nil {fmt.Println(decode err:, err.Error())return} 运行结果如下 状态码由正常值0变成了429所以在执行滚动查询时我们需要加上对状态码的判断以捕获到上下文超限的情况否则没有检索到数据还以为系统出bug了呢。 这个问题就是滚动查询的一个短板系统用户量大了发起滚动查询一旦超过500就会影响用户检索数据当然了es还是有其他解决方案来进行全量的数据检索还是那句话下一篇文章再写。 5、所有代码 githubGitHub - liupengh3c/career  代码位于以下文件 https://github.com/liupengh3c/career/blob/main/elastic/scrool/main.go 代码也粘过来吧 package mainimport (fmtosstringstimegithub.com/elastic/go-elasticsearch/v8jsoniter github.com/json-iterator/gogithub.com/liupengh3c/esbuilder )// 最外层数据结构 type Documents struct {ScrollID string json:_scroll_idShards Shards json:_shardsHits HitOutLayer json:hitsTimedOut bool json:timed_outTook int json:took } type Shards struct {Failed int json:failedSkipped int json:skippedSuccessful int json:successfulTotal int json:total } type HitOutLayer struct {Hits []Hits json:hitsMaxScore float64 json:max_scoreTotal Total json:total } type Hits struct {ID string json:_idIndex string json:_indexScore float64 json:_scoreSource map[string]any json:_sourceType string json:_type } type Total struct {Relation string json:relationValue int json:value }func main() {client, err : NewEsClient()if err ! nil {fmt.Println(create client err:, err.Error())return}fmt.Println(connect success)for i : 0; i 510; i {ScrollSearch(client)} } func NewEsClient() (*elasticsearch.Client, error) {cert, _ : os.ReadFile(/Users/liupeng/Documents/study/elasticsearch-8.17.0/config/certs/http_ca.crt)client, err : elasticsearch.NewClient(elasticsearch.Config{Username: elastic,Password: XBSadqa799j_AozAh,Addresses: []string{https://127.0.0.1:9200},CACert: cert,})if err ! nil {// fmt.Println(create client err:, err.Error())return client, err}return client, nil }func ScrollSearch(client *elasticsearch.Client) {var json jsoniter.ConfigCompatibleWithStandardLibrarydocs : Documents{}dslQuery : esbuilder.NewDsl()boolQuery : esbuilder.NewBoolQuery()dslQuery.SetOrder(esbuilder.NewSortQuery(doc_id, asc))dslQuery.SetQuery(boolQuery)dslQuery.SetSize(10000)res, err : client.Search(client.Search.WithIndex(new_tag_202411),client.Search.WithBody(strings.NewReader(dslQuery.BuildJson())),client.Search.WithScroll(time.Minute*20),)if err ! nil {fmt.Println(search err:, err.Error())return}err json.NewDecoder(res.Body).Decode(docs)if err ! nil {fmt.Println(decode err:, err.Error())return}fmt.Println(search count:, len(docs.Hits.Hits))scrollId : docs.ScrollIDfor {docs Documents{}res, err client.Scroll(client.Scroll.WithScrollID(scrollId),client.Scroll.WithScroll(time.Minute),)if err ! nil {fmt.Println(scroll err:, err.Error())return}err json.NewDecoder(res.Body).Decode(docs)if err ! nil {fmt.Println(decode err:, err.Error())return}defer res.Body.Close()if res.StatusCode 429 {fmt.Println(scroll contexts is more than 500)return}if len(docs.Hits.Hits) 0 {break}fmt.Println(search count:, len(docs.Hits.Hits))scrollId docs.ScrollID}client.ClearScroll(client.ClearScroll.WithScrollID(scrollId),) }
http://www.hkea.cn/news/14387222/

相关文章:

  • 网络营销策划方案设计天津网站优化公司推荐哪家
  • 免费公司网站如何建立设计南通网站seo报价
  • 深圳网站建设服务前端是啥
  • 游戏交易网站怎么做页面设计在哪打开
  • 南方科技大学网站建设番禺网站建设系统
  • 网站构建代码模板行业网站做不下去
  • 做兼职网站设计项目网格化管理方案
  • 封装系统如何做自己的网站五种商业模式
  • 怎么用自己的网站做邮箱盘锦市网站建设
  • 做网站公司三年财务预算表photoshop永久免费版
  • 网站开发中标签栏的图标一般都在那个文件中写代码怎么样做好网站运营
  • 烟台做网站排名深圳做网站哪家最好
  • 青岛优化网站诊断深圳手机网站开发
  • 长沙网络建设的网站东莞住房和城乡建设局
  • 小男孩做爰网站上海自适应网站开发
  • 做标书要不要做网站北京市政建设集团有限公司
  • wordpress网站页面打开很慢做一个手机app的步骤
  • 做企业网站用哪个cms南宁seo优化
  • 广东企业微信网站开发老域名全部失效请拿笔记好
  • 政务公开和网站建设情况总结建门户网站要多少钱
  • 做酒类网站中企动力潍坊分公司
  • 美团网站制作的特色中山企业网站制作
  • 网站发布到ftp订单网站怎么做
  • 医疗器械公司网站备案怎么做西安搬家公司电话大全
  • 做网站用那一种语言最好网络营销策划方案的设计
  • 了解网站建设规划流程类似稿定设计的软件有哪些
  • 建站哪家好论坛做网站协调
  • 深圳小程序开发官网唐山seo排名外包
  • 购物网站开发代码安阳建设网站
  • 建设网站的网站是什么wordpress网站设计