成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

python 用scroll查詢大量es數(shù)據(jù)

HollisChuang / 1990人閱讀

摘要:游標(biāo)查詢查詢,可以用于對(duì)有效地執(zhí)行大批量的文檔查詢,而又不用付出深度分頁(yè)那種代價(jià)。啟動(dòng)游標(biāo)查詢其中的表示游標(biāo)查詢窗口保持分鐘,如果一次取的數(shù)據(jù)量大可以設(shè)置為一個(gè)大一些的時(shí)間。完整代碼用獲取所有數(shù)據(jù)的完整代碼如下過(guò)濾的每次取的數(shù)據(jù)量

游標(biāo)查詢
scroll查詢,可以用于對(duì) Elasticsearch 有效地執(zhí)行大批量的文檔查詢,而又不用付出深度分頁(yè)那種代價(jià)。
scroll查詢可以分為以下兩個(gè)步驟。

啟動(dòng)游標(biāo)查詢

GET /host/_search?scroll=1m

其中的scroll=1m表示游標(biāo)查詢窗口保持1分鐘,如果一次取的數(shù)據(jù)量大可以設(shè)置為一個(gè)大一些的時(shí)間。
返回的字段中包含一個(gè)scroll_id, 接下來(lái)用這個(gè)字段可以獲取后續(xù)值。

循環(huán)獲取

循環(huán)獲取余下的值

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

通過(guò)上一步得到的scroll_id,獲取余下的值。

完整代碼

用Python獲取所有數(shù)據(jù)的完整代碼如下

def get_all_es_data(url):
    # 過(guò)濾的query
    query = {}
    data = []
    # 每次取的數(shù)據(jù)量
    size = 10000
    scroll_id = None
    try:
        while size == 10000:
            if not scroll_id:
                query["size"] = 10000
                curr_url = url + "/_search?scroll=8m"
                response = requests.post(curr_url, json.dumps(query), headers={"content-type": "application/json"})
            else:
                curr_url = url + "_search/scroll?scroll=8m&scroll_id=" + scroll_id
                response = requests.get(curr_url)
            if response:
                response = json.loads(response.text)
                scroll_id = response["_scroll_id"]
                response_data = [doc["_source"] for doc in response["hits"]["hits"]]
                data.extend(response_data)
    except Exception as err:
        pass

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/45172.html

相關(guān)文章

  • [零基礎(chǔ)學(xué)python]Python操作數(shù)據(jù)庫(kù)(2)

    摘要:那就在進(jìn)入到數(shù)據(jù)庫(kù),看看。查詢數(shù)據(jù)在前面操作的基礎(chǔ)上,如果要從數(shù)據(jù)庫(kù)中查詢數(shù)據(jù),當(dāng)然也可以用指針來(lái)操作了。從操作中看出來(lái)了,已經(jīng)將數(shù)據(jù)庫(kù)中第二條的用戶名修改為了,用的就是語(yǔ)句。不過(guò),要真的實(shí)現(xiàn)在數(shù)據(jù)庫(kù)中更新,還要運(yùn)行這就大事完吉了。 回顧一下已有的戰(zhàn)果:(1)連接數(shù)據(jù)庫(kù);(2)建立指針;(3)通過(guò)指針插入記錄;(4)提交將插入結(jié)果保存到數(shù)據(jù)庫(kù)。在交互模式中,先溫故,再知新。 >>> ...

    susheng 評(píng)論0 收藏0
  • ES分布式架構(gòu)及底層原理

    摘要:分布式架構(gòu)原理設(shè)計(jì)的理念就是分布式搜索引擎,底層實(shí)現(xiàn)還是基于的,核心思想是在多態(tài)機(jī)器上啟動(dòng)多個(gè)進(jìn)程實(shí)例,組成一個(gè)集群。 es分布式架構(gòu)原理 elasticsearch設(shè)計(jì)的理念就是分布式搜索引擎,底層實(shí)現(xiàn)還是基于Lucene的,核心思想是在多態(tài)機(jī)器上啟動(dòng)多個(gè)es進(jìn)程實(shí)例,組成一個(gè)es集群。一下是es的幾個(gè)概念: 接近實(shí)時(shí)es是一個(gè)接近實(shí)時(shí)的搜索平臺(tái),這就意味著,從索引一個(gè)文檔直到文檔...

    Ocean 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<