日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ElasticSearch 文档的添加、获取、更新、删除_05

發(fā)布時(shí)間:2024/9/27 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ElasticSearch 文档的添加、获取、更新、删除_05 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

            • 新建文檔
            • 獲取文檔
            • 批量獲取
            • 文檔更新
            • 查詢更新
            • 刪除文檔
            • 批量操作

新建文檔

首先新建一個(gè)索引。

然后向索引中添加一個(gè)文檔:

PUT blog/_doc/1 {"title":"6. ElasticSearch 文檔基本操作","date":"2021-12-07","content":"首先新建一個(gè)索引。" }

1 表示新建文檔的 id。

添加成功后,響應(yīng)的 json 如下:

{"_index" : "blog","_type" : "_doc","_id" : "1","_version" : 1,"result" : "created","_shards" : {"total" : 2,"successful" : 2,"failed" : 0},"_seq_no" : 0,"_primary_term" : 1 }
  • _index 表示文檔索引。
  • _type 表示文檔的類型。
  • _id 表示文檔的 id。
  • _version 表示文檔的版本(更新文檔,版本會(huì)自動(dòng)加 1,針對(duì)一個(gè)文檔的)。
  • result 表示執(zhí)行結(jié)果。
  • _shards 表示分片信息。
  • _seq_no 和 _primary_term 這兩個(gè)也是版本控制用的(針對(duì)當(dāng)前 index)。

添加成功后,可以查看添加的文檔:

當(dāng)然,添加文檔時(shí),也可以不指定 id,此時(shí)系統(tǒng)會(huì)默認(rèn)給出一個(gè) id,如果不指定 id,則需要使用 POST 請(qǐng)求,而不能使用 PUT 請(qǐng)求。

POST blog/_doc {"title":"666","date":"2020-11-05","content":"首先新建一個(gè)索引。" }
獲取文檔

Es 中提供了 GET API 來查看存儲(chǔ)在 es 中的文檔。使用方式如下:

GET blog/_doc/1

上面這個(gè)命令表示獲取一個(gè) id 為 1 的文檔。

如果獲取不存在的文檔,會(huì)返回如下信息:

{"_index" : "blog","_type" : "_doc","_id" : "1","_version" : 1,"_seq_no" : 0,"_primary_term" : 1,"found" : true,"_source" : {"title" : "6. ElasticSearch 文檔基本操作","date" : "2021-12-07","content" : "首先新建一個(gè)索引。"} }

如果僅僅只是想探測某一個(gè)文檔是否存在,可以使用 head 請(qǐng)求:

如果文檔不存在,響應(yīng)如下:

HEAD blog/_doc/2

HEAD blog/_doc/1

如果文檔存在,響應(yīng)如下:

批量獲取

當(dāng)然也可以批量獲取文檔。

GET blog/_mget {"ids":["1","2"] }
文檔更新
  • 普通更新
    注意,文檔更新一次,version 就會(huì)自增 1。

可以直接更新整個(gè)文檔:

PUT blog/_doc/1 {"title":"666" }

這種方式,更新的文檔會(huì)覆蓋掉原文檔。

  • 大多數(shù)時(shí)候,我們只是想更新文檔字段,這個(gè)可以通過腳本來實(shí)現(xiàn)。
POST blog/_update/1 {"script": {"lang": "painless","source":"ctx._source.title=params.title","params": {"title":"666666"}} }

更新的請(qǐng)求格式:POST {index}/_update/{id}

在腳本中,lang 表示腳本語言,painless 是 es 內(nèi)置的一種腳本語言。source 表示具體執(zhí)行的腳本,ctx 是一個(gè)上下文對(duì)象,通過 ctx 可以訪問到 _source、_title 等。

也可以向文檔中添加字段:

POST blog/_update/1 {"script": {"lang": "painless","source":"ctx._source.tags=[\"java\",\"php\"]"} }GET blog/_doc/1

通過腳本語言,也可以修改數(shù)組。例如再增加一個(gè) tag:

POST blog/_update/1 {"script":{"lang": "painless","source":"ctx._source.tags.add(\"js\")"} }

當(dāng)然,也可以使用 if else 構(gòu)造稍微復(fù)雜一點(diǎn)的邏輯。

POST blog/_update/1 {"script": {"lang": "painless","source": "if (ctx._source.tags.contains(\"java\")){ctx.op=\"delete\"}else{ctx.op=\"none\"}"} }
查詢更新

通過條件查詢找到文檔,然后再去更新。

例如將 title 中包含 666 的文檔的 content 修改為 888。

POST blog/_update_by_query {"script": {"source": "ctx._source.content=\"888\"","lang": "painless"},"query": {"term": {"title":"666"}} }
刪除文檔
  • 根據(jù) id 刪除
    從索引中刪除一個(gè)文檔。

刪除一個(gè) id 為 1的文檔。

DELETE blog/_doc/1

如果在添加文檔時(shí)指定了路由,則刪除文檔時(shí)也需要指定路由,否則刪除失敗。

  • 查詢刪除
    查詢刪除是 POST 請(qǐng)求。

例如刪除 title 中包含 666 的文檔

POST blog/_delete_by_query {"query":{"term":{"title":"666"}} }

也可以刪除某一個(gè)索引下的所有文檔:

POST blog/_delete_by_query {"query":{"match_all":{}} }
批量操作

es 中通過 Bulk API 可以執(zhí)行批量索引、批量刪除、批量更新等操作。

首先需要將所有的批量操作寫入一個(gè) JSON 文件中,然后通過 POST 請(qǐng)求將該 JSON 文件上傳并執(zhí)行。

例如新建一個(gè)名為 aaa.json 的文件,內(nèi)容如下:

首先第一行:index 表示要執(zhí)行一個(gè)索引操作(這個(gè)表示一個(gè) action,其他的 action 還有 create,delete,update)。_index 定義了索引名稱,這里表示要?jiǎng)?chuàng)建一個(gè)名為 user 的索引,_id 表示新建文檔的 id 為 666。

第二行是第一行操作的參數(shù)。

第三行的 update 則表示要更新。

第四行是第三行的參數(shù)。

注意,結(jié)尾要空出一行。

aaa.json 文件創(chuàng)建成功后,在該目錄下,執(zhí)行請(qǐng)求命令,如下:

curl -XPOST "http://localhost:9200/user/_bulk" -H "content-type:application/json" --data-binary @aaa.json

執(zhí)行完成后,就會(huì)創(chuàng)建一個(gè)名為 user 的索引,同時(shí)向該索引中添加一條記錄,再修改該記錄,最終結(jié)果如下:

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的ElasticSearch 文档的添加、获取、更新、删除_05的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。