国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Elasticsearch Point in time查詢

這篇具有很好參考價(jià)值的文章主要介紹了Elasticsearch Point in time查詢。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

Elasticsearch Point in time查詢

Point in time API

默認(rèn)情況下,搜索請求針對目標(biāo)索引的最新可見數(shù)據(jù)執(zhí)行,這稱為時(shí)間點(diǎn)。 Elasticsearch pit(時(shí)間點(diǎn))是一個(gè)輕量級(jí)的視圖,可以查看數(shù)據(jù)在啟動(dòng)時(shí)的狀態(tài)。 在某些情況下,最好使用同一時(shí)間點(diǎn)執(zhí)行多個(gè)搜索請求。 例如,如果在 search_after 請求之間發(fā)生刷新,則這些請求的結(jié)果可能不一致,因?yàn)樗阉髦g發(fā)生的更改僅在最近的時(shí)間點(diǎn)可見。
先決條件

如果啟用了 Elasticsearch 安全特性,你必須具有目標(biāo)數(shù)據(jù)流、索引或別名的讀取索引權(quán)限。要在某個(gè)時(shí)間點(diǎn) (PIT) 中搜索別名,你必須具有該別名的數(shù)據(jù)流或索引的讀取索引權(quán)限。

下面,我們將以一些例子來展示如何使用 PIT 來進(jìn)行搜索。我們首先來導(dǎo)入我們的索引:

POST _bulk
{ "index" : { "_index" : "twitter", "_id": 1} }
{"user":"雙榆樹-張三","message":"今兒天氣不錯(cuò)啊,出去轉(zhuǎn)轉(zhuǎn)去","uid":2,"age":20,"city":"北京","province":"北京","country":"中國","address":"中國北京市海淀區(qū)","location":{"lat":"39.970718","lon":"116.325747"}}
{ "index" : { "_index" : "twitter", "_id": 2 }}
{"user":"東城區(qū)-老劉","message":"出發(fā),下一站云南!","uid":3,"age":30,"city":"北京","province":"北京","country":"中國","address":"中國北京市東城區(qū)臺(tái)基廠三條3號(hào)","location":{"lat":"39.904313","lon":"116.412754"}}
{ "index" : { "_index" : "twitter", "_id": 3} }
{"user":"東城區(qū)-李四","message":"happy birthday!","uid":4,"age":30,"city":"北京","province":"北京","country":"中國","address":"中國北京市東城區(qū)","location":{"lat":"39.893801","lon":"116.408986"}}
{ "index" : { "_index" : "twitter", "_id": 4} }
{"user":"朝陽區(qū)-老賈","message":"123,gogogo","uid":5,"age":35,"city":"北京","province":"北京","country":"中國","address":"中國北京市朝陽區(qū)建國門","location":{"lat":"39.718256","lon":"116.367910"}}
{ "index" : { "_index" : "twitter", "_id": 5} }
{"user":"朝陽區(qū)-老王","message":"Happy BirthDay My Friend!","uid":6,"age":50,"city":"北京","province":"北京","country":"中國","address":"中國北京市朝陽區(qū)國貿(mào)","location":{"lat":"39.918256","lon":"116.467910"}}
{ "index" : { "_index" : "twitter", "_id": 6} }
{"user":"虹橋-老吳","message":"好友來了都今天我生日,好友來了,什么 birthday happy 就成!","uid":7,"age":90,"city":"上海","province":"上海","country":"中國","address":"中國上海市閔行區(qū)","location":{"lat":"31.175927","lon":"121.383328"}}

我們使用上面的 bulk 命令導(dǎo)入6個(gè)數(shù)據(jù)。它將創(chuàng)建一個(gè)叫做 twitter 的索引。
在搜索請求中使用之前,必須明確打開時(shí)間點(diǎn)。 keep_alive 參數(shù)告訴 Elasticsearch 它應(yīng)該保持一個(gè)時(shí)間點(diǎn)存活多久,例如 ?keep_alive=5m。
ini復(fù)制代碼POST /twitter/_pit?keep_alive=2m

上面的命令將返回如下的結(jié)果:

{
  "id" : "g-azAwEHdHdpdHRlchZIck44aVdSNlFMNnEyTmVMUGJEVm9RABZxNnpoTVIxQVFIeTRkci1MSGlibU9BAAAAAAAAARtiFldSS2x2LVZJUU5xajU1ZkxCN2dyMUEAARZIck44aVdSNlFMNnEyTmVMUGJEVm9RAAA="
}

接下來,我們可以使用如下的命令來對我們的索引進(jìn)行搜索:

GET _search
{
  "query": {
    "match": {
      "city": "北京"
    }
  },
  "pit": {
     "id" : "g-azAwEHdHdpdHRlchZIck44aVdSNlFMNnEyTmVMUGJEVm9RABZxNnpoTVIxQVFIeTRkci1MSGlibU9BAAAAAAAAARtiFldSS2x2LVZJUU5xajU1ZkxCN2dyMUEAARZIck44aVdSNlFMNnEyTmVMUGJEVm9RAAA=",
     "keep_alive": "2m"
  }
}

在使用上面的搜索時(shí)必須注意的一點(diǎn)是:我們不能使用如下的格式:
bash復(fù)制代碼GET /twitter/_search

也就是說,我們不能使用索引名作為請求的一部分。我們必須注意一下的幾個(gè)方面:

帶有 pit 參數(shù)的搜索請求不得指定 index、routing 和 preference,因?yàn)檫@些參數(shù)是從時(shí)間點(diǎn)復(fù)制的。
id 參數(shù)告訴 Elasticsearch 從這個(gè)時(shí)間點(diǎn)使用上下文執(zhí)行請求。
keep_alive 參數(shù)告訴 Elasticsearch 應(yīng)該將時(shí)間點(diǎn)的生存時(shí)間延長多長時(shí)間。

在上面,我們設(shè)置 keep_alive 為2分鐘。當(dāng)我們在2分鐘后再執(zhí)行上面的搜索時(shí),我們可以看到如下的錯(cuò)誤信息:

{
  "error" : {
    "root_cause" : [
      {
        "type" : "search_context_missing_exception",
        "reason" : "No search context found for id [72546]"
      }
    ],
    "type" : "search_phase_execution_exception",
    "reason" : "all shards failed",
    "phase" : "query",
    "grouped" : true,
    "failed_shards" : [
      {
        "shard" : 0,
        "index" : "twitter",
        "node" : "q6zhMR1AQHy4dr-LHibmOA",
        "reason" : {
          "type" : "search_context_missing_exception",
          "reason" : "No search context found for id [72546]"
        }
      }
    ]
  },
  "status" : 404
}

重要:開放時(shí)間點(diǎn)請求和后續(xù)的每個(gè)搜索請求可以返回不同的 id; 因此對于下一個(gè)搜索請求總是使用最近收到的 id。

我們接下來做另外一個(gè)實(shí)驗(yàn)。我們首先再次運(yùn)行如下的命令:

POST /twitter/_pit?keep_alive=2m

運(yùn)行完后,我們得到一個(gè)不一樣的 id,盡管這個(gè)新的 id 和上次返回的值長的非常像。
我們使用最新的 id 來做如下的查詢:

GET _search
{
  "query": {
    "match": {
      "city": "北京"
    }
  },
  "pit": {
     "id" : "g-azAwEHdHdpdHRlchZIck44aVdSNlFMNnEyTmVMUGJEVm9RABZxNnpoTVIxQVFIeTRkci1MSGlibU9BAAAAAAAAAR8tFldSS2x2LVZJUU5xajU1ZkxCN2dyMUEAARZIck44aVdSNlFMNnEyTmVMUGJEVm9RAAA=",
     "keep_alive": "2m"
  }
}

我們可以看到有5個(gè)這樣的文檔:

我們接下來,使用如下的命令來添加一個(gè)新的文檔:

PUT twitter/_doc/7
{
  "user": "張三",
  "message": "今天天氣真好",
  "uid": 8,
  "age": 35,
  "city": "北京",
  "province": "北京",
  "country": "中國",
  "address": "中國北京市朝陽區(qū)",
  "location": {
    "lat": "31.175927",
    "lon": "121.383328"
  }
}

請注意這個(gè)文檔的 city 字段也是 “北京”,那么在新增加一個(gè)文檔后,再次來做如下的查詢:

GET _search
{
  "query": {
    "match": {
      "city": "北京"
    }
  },
  "pit": {
     "id" : "g-azAwEHdHdpdHRlchZIck44aVdSNlFMNnEyTmVMUGJEVm9RABZxNnpoTVIxQVFIeTRkci1MSGlibU9BAAAAAAAAAR8tFldSS2x2LVZJUU5xajU1ZkxCN2dyMUEAARZIck44aVdSNlFMNnEyTmVMUGJEVm9RAAA=",
     "keep_alive": "2m"
  }
}

我們可以看到和之前一模一樣的結(jié)果,還是5個(gè)文檔。
然后,當(dāng)我們做如下的查詢:

GET /twitter/_search
{
  "query": {
    "match": {
      "city": "北京"
    }
  }
}

我們可以清楚地看到有6個(gè)文檔的 city 是 “北京”

這到底是怎么回事呢?究其原因就是當(dāng)我們查詢時(shí)使用 pit 參數(shù)時(shí),它只能查詢在那個(gè)時(shí)間點(diǎn)之前的所有文檔,而后面新增加的文檔不能被查詢到。這個(gè)在實(shí)際的很多應(yīng)用中非常有用。比如針對一個(gè)快速變化的索引來說,我們想對它進(jìn)行表格化,我們不希望在我們進(jìn)行分頁時(shí)每次得到的數(shù)據(jù)集是不同的。
保持時(shí)間點(diǎn)活著
傳遞給開放時(shí)間點(diǎn)請求和搜索請求的 keep_alive 參數(shù)延長了相應(yīng)時(shí)間點(diǎn)的生存時(shí)間。 該值(例如 1m,參見時(shí)間單位)不需要足夠長來處理所有數(shù)據(jù) — 它只需要足夠長以用于下一個(gè)請求。
通常,后臺(tái)合并過程通過將較小的段合并在一起以創(chuàng)建新的更大的段來優(yōu)化索引。 一旦不再需要較小的段,它們就會(huì)被刪除。 但是,開放時(shí)間點(diǎn)會(huì)阻止刪除舊段,因?yàn)樗鼈內(nèi)栽谑褂弥小?/p>

提示:保持舊段(segment)處于活動(dòng)狀態(tài)意味著需要更多的磁盤空間和文件句柄。 確保你已將節(jié)點(diǎn)配置為具有充足的空閑文件句柄。 請參閱文件描述符。

此外,如果一個(gè)段(segment)包含已刪除或更新的文檔,那么該時(shí)間點(diǎn)必須跟蹤該段中的每個(gè)文檔在初始搜索請求時(shí)是否處于活動(dòng)狀態(tài)。 如果索引上有許多打開的時(shí)間點(diǎn),并且會(huì)受到持續(xù)刪除或更新的影響,請確保你的節(jié)點(diǎn)有足夠的堆空間。
你可以使用節(jié)點(diǎn)統(tǒng)計(jì) API 檢查有多少時(shí)間點(diǎn)(即搜索上下文)打開:
sql復(fù)制代碼GET /_nodes/stats/indices/search

關(guān)閉時(shí)間點(diǎn) API
時(shí)間點(diǎn)在其 keep_alive 結(jié)束后自動(dòng)關(guān)閉。 然而,保持時(shí)間點(diǎn)是有代價(jià)的,如上一節(jié)所述。 一旦不再用于搜索請求,就應(yīng)關(guān)閉時(shí)間點(diǎn)。我們可以通過如下的命令來對它進(jìn)行關(guān)閉:

DELETE /_pit
{
  "id" : "g-azAwEHdHdpdHRlchZIck44aVdSNlFMNnEyTmVMUGJEVm9RABZxNnpoTVIxQVFIeTRkci1MSGlibU9BAAAAAAAAASLCFldSS2x2LVZJUU5xajU1ZkxCN2dyMUEAARZIck44aVdSNlFMNnEyTmVMUGJEVm9RAAA="
}

如果該 id 還是 alive 的狀態(tài),那么它將返回:
json復(fù)制代碼

{
  "succeeded" : true,
  "num_freed" : 1
}

在上面,如果返回 true,則與時(shí)間點(diǎn) ID 關(guān)聯(lián)的所有搜索上下文都將成功關(guān)閉。num_freed 表示多少個(gè)搜索上下文數(shù)量已成功關(guān)閉。

參考

作者:Elasticsearch
鏈接:https://juejin.cn/post/7002757814963666980
來源:稀土掘金
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。文章來源地址http://www.zghlxwxcb.cn/news/detail-826132.html

到了這里,關(guān)于Elasticsearch Point in time查詢的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • elasticSearch 分頁查詢出現(xiàn)重復(fù)數(shù)據(jù)

    ????????match查詢默認(rèn)按照評分排序,出現(xiàn)數(shù)據(jù)評分一致,客戶端調(diào)用分頁的時(shí)候,會(huì)出現(xiàn)數(shù)據(jù)重復(fù)錯(cuò)亂很嚴(yán)重。from size 做分頁,每次都是重新加載,所以評分一致的數(shù)據(jù),順序有可能會(huì)變化。在分頁的臨界點(diǎn),容易導(dǎo)致數(shù)據(jù)重復(fù)。 ?解決方法: 1. 使用不重復(fù)字段進(jìn)行排

    2024年04月16日
    瀏覽(22)
  • [elasticsearch]使用postman來查詢數(shù)據(jù)

    [elasticsearch]使用postman來查詢數(shù)據(jù)

    最近需要debug程序,debug的時(shí)候需要查找elasticsearch里面的數(shù)據(jù)是否正確。 第一步建立一個(gè)post請求,并按照圖下的方式填上ur和參數(shù): 發(fā)送post請求,url為: 我這里查詢的是title字段。 如果需要用戶名和密碼,需要這樣填寫: 填寫用戶名和密碼: 然后點(diǎn)擊send就可以獲取數(shù)據(jù)啦

    2024年02月07日
    瀏覽(20)
  • Elasticsearch數(shù)據(jù)結(jié)構(gòu)與查詢語法

    Elasticsearch是一個(gè)基于Lucene的搜索引擎,它提供了實(shí)時(shí)、可擴(kuò)展、可伸縮的搜索功能。Elasticsearch是一個(gè)分布式、實(shí)時(shí)的、多用戶的搜索和分析引擎。它是基于Lucene的搜索引擎,用于實(shí)時(shí)、可擴(kuò)展、可伸縮的搜索功能。Elasticsearch是一個(gè)分布式、實(shí)時(shí)的、多用戶的搜索和分析引擎

    2024年02月21日
    瀏覽(37)
  • 如何使用ElasticSearch存儲(chǔ)和查詢數(shù)據(jù)

    1. 引言 在大多數(shù)的場景里,存儲(chǔ)數(shù)據(jù)都是用MySQL這類關(guān)系型數(shù)據(jù)庫,這類數(shù)據(jù)庫的特點(diǎn)是數(shù)據(jù)存儲(chǔ)安全性和一致性高,可以用于事務(wù)操作,但是隨著數(shù)據(jù)量的增加,查詢的速度也會(huì)隨之降低,并且其擴(kuò)展能力有限,因此在日志記錄和查詢等場景下,MySQL就顯得力不從心,為了

    2024年02月14日
    瀏覽(35)
  • 基于Elasticsearch 為電商提供商品數(shù)據(jù)大數(shù)據(jù)查詢

    基于Elasticsearch 為電商提供商品數(shù)據(jù)大數(shù)據(jù)查詢

    對于現(xiàn)代電商的產(chǎn)品,維度的多員花,與一套強(qiáng)大的搜索引擎,那是非常必要的。今天我們主要是描述我們在從事電商搜索引擎過程中的遇到的一些問題和經(jīng)驗(yàn)分享。 1、我們準(zhǔn)備為我們需要做查找的數(shù)據(jù)做好一張視圖,方便我們分析數(shù)據(jù)查找維度,與查找場景需求。附加代

    2024年02月09日
    瀏覽(21)
  • Elasticsearch ES操作:查詢數(shù)據(jù)(全部、分頁、單條)

    查詢 條件查詢 指定條數(shù) 返回結(jié)果

    2024年02月16日
    瀏覽(25)
  • [大數(shù)據(jù)][elasticsearch]使用curl進(jìn)行的簡單查詢

    curl: ?-X :指定http的請求方式,有HEAD、GET、POST、PUT、DELETE ?-d :指定要傳輸?shù)臄?shù)據(jù) ?-H :指定http的請求頭信息 curl -XPUT http://ip:port/索引名?pretty-- 創(chuàng)建索引 curl -XGET http://ip:port/_cat/indices?v --查看當(dāng)前es的所有索引信息 curl -XGET http://ip:port/索引名?pretty ?--查看單個(gè)索引信息 curl -XDE

    2024年02月11日
    瀏覽(100)
  • 用elasticsearch head查詢和刪除es數(shù)據(jù)

    用elasticsearch head查詢和刪除es數(shù)據(jù)

    下圖中的構(gòu)成為 http://ip:port/ 索引名/索引類型/_search 請求方式為GET 這種方式是查詢該索引下的所有數(shù)據(jù) 如果要查詢更為詳細(xì),可以在查詢條件后面跟ID,比如 http://ip:port/ 索引名/索引類型名/文檔id 請求方式仍然是GET請求 如下圖所示 下圖是刪除指定es下某一文檔,其構(gòu)成為

    2024年02月15日
    瀏覽(15)
  • ElasticSearch中查詢406無顯示數(shù)據(jù)的解決方法

    ElasticSearch中查詢406無顯示數(shù)據(jù)的解決方法

    在docker安裝了elasticsearch-head:5和elasticsearch:6.3.2之后,打開界面連接es時(shí)發(fā)現(xiàn)數(shù)據(jù)無法展示。 elasticsearch 6增加了請求頭嚴(yán)格校驗(yàn)的原因,并且返回結(jié)果是 { \\\"error\\\" : \\\"Content-Type header [application/x-www-form-urlencoded] is not supported\\\", \\\"status\\\" : 406 } 解決辦法: 找到vendor.js文件 1.找到6886行 co

    2024年02月15日
    瀏覽(17)
  • 使用Elasticsearch處理大量數(shù)據(jù),如何翻頁查詢

    當(dāng)使用Elasticsearch處理大量數(shù)據(jù)時(shí),從第一頁直接跳轉(zhuǎn)到第100頁進(jìn)行查詢確實(shí)是一個(gè)挑戰(zhàn),因?yàn)樾枰?jì)算跳過的記錄數(shù)并有效地獲取目標(biāo)頁的數(shù)據(jù)。以下是一些建議來實(shí)現(xiàn)這種跳頁查詢: 使用 from 和 size 參數(shù) : Elasticsearch提供了 from 和 size 參數(shù)來實(shí)現(xiàn)分頁。 from 參數(shù)指定了要

    2024年04月15日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包