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

初識(shí)ElasticSearch(5) -批量操作之bulk | 條件查詢 | 其它查詢

這篇具有很好參考價(jià)值的文章主要介紹了初識(shí)ElasticSearch(5) -批量操作之bulk | 條件查詢 | 其它查詢。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

  • 本系列筆記結(jié)合HTTP請(qǐng)求(使用postman調(diào)用,源文件見GitHub)和ElasticsearchRestTemplate進(jìn)行調(diào)用學(xué)習(xí)
  • ElasticsearchRestTemplate封裝了RestHighLevelClient,有些場(chǎng)景還得用RestHighLevelClient來操作
  • 版本說明:使用的SpringBoot-2.3.5,對(duì)應(yīng)的ElasticSearch-7.6.2;所以還是可以用RestHighLevelClient
  • ElasticSearch-7.15后就棄用了RestHighLevelClient,可見官網(wǎng)文檔,之后的版本可以開啟客戶端兼容來維持正常使用
1. bulk:

可以批量進(jìn)行增刪改,并且某一個(gè)操作失敗,不會(huì)影響其他文檔的操作,會(huì)在返回結(jié)果中告訴你失敗的詳細(xì)的原因

1.1. bulk語法:
  • POST /_bulk或POST /<index>/_bulk
  • 請(qǐng)求體要使用NDJSON(新行分隔的JSON)結(jié)構(gòu):JSON串只能放一行,相鄰的JOSN串要換行
  • 現(xiàn)有行為actions ,再有請(qǐng)求體
1.2. bulk行為-增刪改:
  • create 如果文檔不存在就創(chuàng)建,但如果文檔存在就返回錯(cuò)誤
  • index 如果文檔不存在就創(chuàng)建,如果文檔存在就更新
  • update 更新一個(gè)文檔,如果文檔不存在就返回錯(cuò)誤
  • delete 刪除一個(gè)文檔,如果要?jiǎng)h除的文檔id不存在,就返回錯(cuò)誤
2. bulk-index批量插入:

【HTTP請(qǐng)求】:往user_term索引批量插入數(shù)據(jù),指定文檔id分別是1和2
·初識(shí)ElasticSearch(5) -批量操作之bulk | 條件查詢 | 其它查詢
【說明】:二者的結(jié)果是一樣的,_index為索引名,_id為文檔id,如果索引不存在會(huì)新建索引
·
【API請(qǐng)求】:save或bulkIndex,實(shí)體類使用@id,userId的值就是文檔id
·初識(shí)ElasticSearch(5) -批量操作之bulk | 條件查詢 | 其它查詢

3. bulk-update批量修改:

批量更新update行為時(shí),有以下幾種模式

  • doc :更新部分文檔
  • upsert:于script一起使用,文檔存在時(shí)根據(jù)script腳本更新_source,不存在時(shí)使用upsert內(nèi)容進(jìn)行添加文檔
  • doc_as_upsert:與upsert類似,文檔存在時(shí)更新,不存在時(shí)將doc的內(nèi)容作為_source添加文檔
  • script:按腳本進(jìn)行更新

【HTTP請(qǐng)求】:
·初識(shí)ElasticSearch(5) -批量操作之bulk | 條件查詢 | 其它查詢
【栗子說明】:

  • 將文檔id=1的文檔,進(jìn)行多字段局部更新
  • 將文檔id=2的文檔,進(jìn)行單字段局部更新
  • 文檔id=3的文檔不存在,更新失敗404
  • 將文檔id=4的文檔,進(jìn)行單字段局部更新,由于文檔不存在,{“address”: “China HZ”}作為_source插入新文檔
  • 將文檔id=5的文檔,根據(jù)script腳本進(jìn)行單字段局部更新,由于文檔不存在,根據(jù)upsert內(nèi)容進(jìn)行插入新文檔

·
【題外】:失敗原因會(huì)在response顯示,也可以使用?filter_path=items.*.error只顯示失敗內(nèi)容

·初識(shí)ElasticSearch(5) -批量操作之bulk | 條件查詢 | 其它查詢
【API請(qǐng)求】:bulkUpdate - 其中一個(gè)失敗不影響其他操作,但會(huì)拋異常
·初識(shí)ElasticSearch(5) -批量操作之bulk | 條件查詢 | 其它查詢

4. bulk-delete批量刪除:

批量刪除文檔
·
【HTTP請(qǐng)求】:
·初識(shí)ElasticSearch(5) -批量操作之bulk | 條件查詢 | 其它查詢
【API請(qǐng)求】:可以使用terms進(jìn)行條件刪除
·初識(shí)ElasticSearch(5) -批量操作之bulk | 條件查詢 | 其它查詢

5. _update_by_query條件更新:

根據(jù)條件進(jìn)行更新文檔,而非通過文檔id進(jìn)行更新,條件可以使用term、match、bool等匹配方式

【栗子】:匹配修改name包含Tom的文檔,批量修改文檔地址為BJ
·
【HTTP請(qǐng)求】:
·初識(shí)ElasticSearch(5) -批量操作之bulk | 條件查詢 | 其它查詢
【API】:updateByQuery
·初識(shí)ElasticSearch(5) -批量操作之bulk | 條件查詢 | 其它查詢

6. _delete_by_query條件刪除:

根據(jù)條件進(jìn)行刪除文檔,而非通過文檔id進(jìn)行刪除,條件可以使用term、match、bool等匹配方式

【栗子】:匹配刪除name包含Tom的文檔
·
【HTTP請(qǐng)求】:
·初識(shí)ElasticSearch(5) -批量操作之bulk | 條件查詢 | 其它查詢
【API請(qǐng)求】:
·初識(shí)ElasticSearch(5) -批量操作之bulk | 條件查詢 | 其它查詢

7. _mget多文檔查詢:

根據(jù)文檔id,從一個(gè)索引或者多個(gè)索引獲取多個(gè)文檔

  • 格式:GET /_mget 或 GET /<index>/_mget

【HTTP請(qǐng)求】:
· 初識(shí)ElasticSearch(5) -批量操作之bulk | 條件查詢 | 其它查詢
【說明】:

  • 可以對(duì)結(jié)果_source中的字段進(jìn)行指定顯示,比如_source只顯示include的字段
  • 并不是只有mget可以這樣,其它的查詢也可以這么指定顯示

·
【ids查詢】:對(duì)于同一個(gè)索引根據(jù)id進(jìn)行查詢多個(gè)文檔,可以直接使用ids查詢
·初識(shí)ElasticSearch(5) -批量操作之bulk | 條件查詢 | 其它查詢
【API請(qǐng)求】:multiGet:同一個(gè)索引的mget
·初識(shí)ElasticSearch(5) -批量操作之bulk | 條件查詢 | 其它查詢

8. 其它查詢:

一些常見的查詢,比如范圍查詢r(jià)ange、分頁查詢等

8.1. range范圍查詢:

返回匹配范圍區(qū)間的文檔數(shù)據(jù)

  • gt - 大于;gte - 大于等于;lt - 小于;lte - 小于等于;format - 日期格式化

【HTTP請(qǐng)求】:插入四條文檔,查詢 2<userId<=4的文檔數(shù)據(jù)
· 初識(shí)ElasticSearch(5) -批量操作之bulk | 條件查詢 | 其它查詢
【API請(qǐng)求】:rangeQuery構(gòu)建QueryBuilders
· 初識(shí)ElasticSearch(5) -批量操作之bulk | 條件查詢 | 其它查詢

8.2. fuzzy模糊/相似查詢:

基于term的相似模糊查詢,返回與搜索詞相似匹配的文檔,主要有如下4個(gè)參數(shù)

  • value:搜索詞
  • fuzziness:允許容錯(cuò)的詞數(shù)/偏移量,默認(rèn)是AUTO
  • prefix_length:不能被 “模糊化” 的初始字符數(shù),前n個(gè)字符與搜索詞相同;默認(rèn)0
  • max_expansions: 默認(rèn)50,該值不宜設(shè)置太大,具體含義不太清楚

【數(shù)據(jù)準(zhǔn)備】:插入三條文檔,name分別是李嘉圖、李嘉欣、王嘉欣
·
【HTTP請(qǐng)求】:搜索李嘉欣
· 初識(shí)ElasticSearch(5) -批量操作之bulk | 條件查詢 | 其它查詢
【說明】:

  • fuzziness為0時(shí),說明不允許容錯(cuò),那么只能搜索到李嘉欣的文檔
  • fuzziness為0時(shí),可以容錯(cuò)一個(gè)詞,那么可以搜索到李嘉欣、李嘉圖的文檔;如果附加prefix_length為3,那么只能搜索到李嘉欣
  • prefix_length為0時(shí),3個(gè)文檔都可以搜索到

·
【API請(qǐng)求】:fuzzyQuery構(gòu)建QueryBuilders
· 初識(shí)ElasticSearch(5) -批量操作之bulk | 條件查詢 | 其它查詢
【match.fuzzy】:match中也支持fuzzy模糊查詢,如下:
·初識(shí)ElasticSearch(5) -批量操作之bulk | 條件查詢 | 其它查詢
【API】:
·初識(shí)ElasticSearch(5) -批量操作之bulk | 條件查詢 | 其它查詢

8.3. exists文檔是否存在查詢:

如果exists匹配的字段不為null或[],就能搜索出文檔

【數(shù)據(jù)準(zhǔn)備】:插入4條文檔,programming_languages分別是[]、[“”]、null、[“java”]
·
【HTTP請(qǐng)求】:
· 初識(shí)ElasticSearch(5) -批量操作之bulk | 條件查詢 | 其它查詢
【API請(qǐng)求】:existsQuery構(gòu)建QueryBuilders
·初識(shí)ElasticSearch(5) -批量操作之bulk | 條件查詢 | 其它查詢

8.4. from/size分頁查詢:

根據(jù)from和size進(jìn)行數(shù)據(jù)結(jié)果分頁;其中from= (頁碼-1) * size

【數(shù)據(jù)準(zhǔn)備】:插入4條文檔,userId為1,2,3,4
·
【HTTP請(qǐng)求】:查詢第2頁數(shù)據(jù),每頁2條,按userId降序
· 初識(shí)ElasticSearch(5) -批量操作之bulk | 條件查詢 | 其它查詢
【說明】:

  • sort、from、size和query同一層級(jí),會(huì)先排序再分頁

·
·【API請(qǐng)求】:withPageable
·初識(shí)ElasticSearch(5) -批量操作之bulk | 條件查詢 | 其它查詢
【說明】:

  • 這里的page和HTTP請(qǐng)求的from不一樣,這里的是頁碼,是從第0頁開始的,也就是第一頁其實(shí)page=0
8.5. wildcard通配符查詢:

支持*通配符查詢,如下匹配name為李 開頭的文檔

·
【HTTP請(qǐng)求】:
· 初識(shí)ElasticSearch(5) -批量操作之bulk | 條件查詢 | 其它查詢
【API請(qǐng)求】:wildcardQuery構(gòu)建QueryBuilders
·初識(shí)ElasticSearch(5) -批量操作之bulk | 條件查詢 | 其它查詢

8.6. 聚合查詢:

另起文章,鏈接后續(xù)再補(bǔ)文章來源地址http://www.zghlxwxcb.cn/news/detail-403104.html

到了這里,關(guān)于初識(shí)ElasticSearch(5) -批量操作之bulk | 條件查詢 | 其它查詢的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • Elasticsearch初識(shí)之索引的批量操作

    批量查詢和批量增刪改 批量查詢 批量寫入: 注意: bulk api對(duì)json的語法有嚴(yán)格的要求,除了delete外,每一個(gè)操作都要兩個(gè)json串(metadata和business data),且每個(gè)json串內(nèi)不能換行,非同一個(gè)json串必須換行,否則會(huì)報(bào)錯(cuò); bulk操作中,任意一個(gè)操作失敗,是不會(huì)影響其他的操作的

    2024年02月02日
    瀏覽(14)
  • java 操作elasticsearch 6.8.0 根據(jù)某個(gè)條件批量刪除數(shù)據(jù)

    注: 連接es以及依賴相關(guān)內(nèi)容請(qǐng)自行配置,只提供方法。 依賴如下 代碼如下

    2024年01月21日
    瀏覽(24)
  • ElasticSearch - 批量更新bulk死鎖問題排查 | 京東云技術(shù)團(tuán)隊(duì)

    ElasticSearch - 批量更新bulk死鎖問題排查 | 京東云技術(shù)團(tuán)隊(duì)

    一、問題系統(tǒng)介紹 監(jiān)聽商品變更MQ消息,查詢商品最新的信息,調(diào)用BulkProcessor批量更新ES集群中的商品字段信息; 由于商品數(shù)據(jù)非常多,所以將商品數(shù)據(jù)存儲(chǔ)到ES集群上,整個(gè)ES集群共劃分了256個(gè)分片,并根據(jù)商品的三級(jí)類目ID進(jìn)行分片路由。 比如一個(gè)SKU的商品名稱發(fā)生變化,

    2024年02月12日
    瀏覽(27)
  • ES _bulk 批量操作用法

    ES _bulk 批量操作用法

    es 的 bulk 操作,是用來批量發(fā)送請(qǐng)求,或者理解為批量操作的。 支持4種操作 bulk 支持多種操作,如下 create 、 index 、 update 、 delete 。 create 如果文檔不存在就創(chuàng)建,但如果文檔存在就返回錯(cuò)誤 index 如果文檔不存在就創(chuàng)建,如果文檔存在就更新 update 更新一個(gè)文檔,如果文檔

    2024年02月03日
    瀏覽(19)
  • Elasticsearch的批量bulk 提交 寫入的方式會(huì)有順序問題嗎?

    Elasticsearch的批量bulk 提交 寫入的方式會(huì)有順序問題嗎?

    Elasticsearch的分布式特性可能會(huì)導(dǎo)致寫入操作的執(zhí)行順序與提交順序稍有不同。在分布式環(huán)境中,Elasticsearch將數(shù)據(jù)分散到不同的節(jié)點(diǎn)上進(jìn)行存儲(chǔ)和處理,因此寫入操作的執(zhí)行順序可能會(huì)受到網(wǎng)絡(luò)延遲、負(fù)載均衡等因素的影響。 根源在于ES的分布式架構(gòu)。如上圖所示,客戶端的

    2024年02月03日
    瀏覽(23)
  • Elasticsearch Java API 的使用-更新索引(update & upset)與 Bulk的批量更新

    Java更新索引(update upset) update 更新使用UpdateRequest(update類型更新,只能更新) upset 要用IndexRequest設(shè)定添加文檔,UpdateRequest設(shè)定更新文檔,設(shè)定upset執(zhí)行有則修改無則更新(upset類型更新,文檔不存在時(shí)創(chuàng)建) 基于Bulk的批量更新(update upset) 動(dòng)態(tài)的更新一個(gè) documents 中的任

    2024年02月11日
    瀏覽(27)
  • MySQL 條件查詢 Emoji 表情符號(hào)卻返回多條數(shù)據(jù)【包含其它表情符號(hào)】的問題解決 - COLLATION 字符序的選擇

    MySQL 條件查詢 Emoji 表情符號(hào)卻返回多條數(shù)據(jù)【包含其它表情符號(hào)】的問題解決 - COLLATION 字符序的選擇

    1、問題出現(xiàn) ? ? 在APP客戶端輸入搜索文章的時(shí),不小心輸入來了一個(gè) emoji 表情符號(hào),提示出錯(cuò)了,在后臺(tái)查詢錯(cuò)誤日志信息,提示查詢出現(xiàn)了2條相同的記錄: 2、業(yè)務(wù)邏輯 ? ? 數(shù)據(jù)庫有個(gè) tb_search_statistic 表格用來記錄用戶的搜索記錄。每次客戶端發(fā)起搜索,后臺(tái)業(yè)務(wù)

    2024年02月11日
    瀏覽(18)
  • ES:多值(in)查詢和條件批量刪除

    ES:多值(in)查詢和條件批量刪除

    Elasticsearch 查詢刪除語句 查詢結(jié)果 查詢結(jié)果 多值批量查詢結(jié)果如下 刪除語句 刪除結(jié)果如下

    2024年02月11日
    瀏覽(20)
  • django 批量創(chuàng)建bulk_create和批量更新bulk_update

    以創(chuàng)建1萬個(gè)對(duì)象為例,相比save() 循環(huán)和save() 事務(wù),bulk_效率是save()循環(huán)保存的百倍,是事務(wù)處理的近10倍: 用法: 用法:

    2024年02月11日
    瀏覽(18)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包