如何把数据快速批量添加到Elasticsearch中

如何把数据快速批量添加到Elasticsearch中,第1张

scroll查询用于有效的从Elasticsearch中检索大量文档,而无需支付深度分页带来的开销。

Scrolling允许我们初始化搜索将结果从Elasticsearch中按批次分离出来直到没有更多结果。这个有点像传统数据库中的游标。

GET /old_index/_search?scroll=1m

}

1、因为保持scroll打开消耗资源,所以我们需要设置超时时间。这里保持1分钟的连接

2、_doc是最有效的排序顺序。

3、在扫描scan的时候,size是应用到每一个片shard上的,所以每一个批次中文档数量应该是size * number_of_primary_shards

该请求返回一个Base-64编码的_scroll_id。现在我们可以通过_scroll_id用_search/scroll接口获取下个批次的数据。

Bulk API使执行多次索引或者删除 *** 作在一个API中完成。这可以极大的提高索引速度。

1、ES批量查询

2、ES批量修改

3、ES批量删除

4、ES批量增加

一、分页查询

1.普通分页查询

2.深度分页

其实就是搜索的深浅度,比如第一页、第二页、第二十页等等,是浅分页。第一万页,第两万页等就是很深了

我们在获取第9999条到10009条数据的时候,其实每个分片都会拿到10009条数据,然后集合在一起,总共是30027条数据,针对这些数据再做排序处理,最后获得十条数据。

如此一来,搜索的太深,就会造成性能问题,会耗费内存和占用cpu。而且es为了性能,也不支持超过一万条数据以上的分页查询。解决深度分页问题,就是应该避免深度分页的 *** 作(限制分页页数)。比如最多提供100页的展示等。

3.scroll滚动搜索

滚动搜索可以先查询出一些数据,然后再紧接着以此往下查询。在第一次查询的时候会有一个滚动id,相当于一个锚标记,随后再次滚动搜索需要上次的标记。每次搜索都是基于一个历史的数据快照,在查询期间,如果有数据变更,所有的内容不会变化

4.批量查询mget

未命中的结果也会返回json显示是否有值。

POST   /_doc/_mget

{

    "ids":[

        "1008",

        "1007",

        "555"

    ]

}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11569952.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-17
下一篇2023-05-17

发表评论

登录后才能评论

评论列表(0条)

    保存