溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

?Elasticsearch如何實現(xiàn)文檔操作

發(fā)布時間:2021-12-16 10:57:03 來源:億速云 閱讀:138 作者:小新 欄目:大數(shù)據(jù)

這篇文章給大家分享的是有關(guān)Elasticsearch如何實現(xiàn)文檔操作的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

Elasticsearch

回顧

前面的四篇文章我們討論了什么是es,是用來干什么的,如何進行安裝,怎么樣建立索引庫,如何給索引庫添加mapping映射。本篇我們開始討論如何添加文檔,如何修改文檔已經(jīng)如何刪除文檔。

文檔

什么是es文檔,其實mapping就是es的數(shù)據(jù)字段約束,我們定義好一個索引,并且定義了一個mapping映射,就相當(dāng)于我們在關(guān)系型數(shù)據(jù)庫中定義好了這個表的表結(jié)構(gòu)。也就是我們這個索引會用那些列。es中的一個文檔,其實就是在mapping約束下的一行數(shù)據(jù)記錄。索引可以認為是文檔的優(yōu)化集合,每個文檔都是字段的集合,這些字段是包含數(shù)據(jù)的鍵值對。默認情況下,Elasticsearch對每個字段中的所有數(shù)據(jù)建立索引,并且每個索引字段都具有專用的優(yōu)化數(shù)據(jù)結(jié)構(gòu)。希望這樣說小伙伴們可以理解。

maping映射結(jié)構(gòu)

上篇文章中我們創(chuàng)建了一個叫做movie的索引,并且創(chuàng)建了該索引的mapping,復(fù)習(xí)一下查詢索引的命令

curl -X GET "localhost:9200/movie/_mapping?pretty"

可以看到,返回一個json串,可以清晰的看到我們定義的mapping,這里就不貼出來,不知道的小伙伴可以到上一篇文章中查看。

添加

下面,我們根據(jù)定義的映射,來添加我們的文檔,特別說明:我們后續(xù)針對es的操作,都會用一個工具postman倆操作,目前還不會的小伙伴們可以自行學(xué)習(xí)一下。

我們都知道,添加文檔用PUT命令,所以需要執(zhí)行如下命令進行文檔的添加,具體請看下圖,postman的操作

http://ip:9200/movie/_doc/1

?Elasticsearch如何實現(xiàn)文檔操作

?

我們將要添加的數(shù)據(jù),以json鍵值對的方式書寫完成,放在body輸入框中,點擊raw,選擇JSON的格式

_doc作者目前用的es版本為7.8的版本,es7.0以前是支持多類型的,但是7.0以后,就將多類型移除掉了,默認支持_docl類型。

?

請求成功成功后會返回如下內(nèi)容:

{
    "_index": "movie",
    "_type": "_doc",
    "_id": "1",
    "_version": 3,
    "result": "created",
    "_shards": {
        "total": 2,
        "successful": 1,
        "failed": 0    },
    "_seq_no": 2,
    "_primary_term": 2}
?

根據(jù)上面的內(nèi)容,我們可以看到的信息有,這個文檔是是創(chuàng)建的"result": "created",屬于movie索引的_doc類型以及他的版本號。

?

id自動分配

上面的例子,我們添加文檔的時候,是指定了一個文檔的id為1,那么我們?nèi)绻恢付?code>id呢?這個時候es會為我們自動生成一個id,請看下面的操作。

?

可以看到讓系統(tǒng)自動分配id,用PUT增加文檔的時候回報錯,可以看到,提示用post并非PUT。然后我們換成post進行請求,返回結(jié)果如下,可以看到系統(tǒng)為我們分配的id是一個字符串。

?
{
    "_index": "movie",
    "_type": "_doc",
    "_id": "9XmceHQByHcRbTF_z1TT",
    "_version": 1,
    "result": "created",
    "_shards": {
        "total": 2,
        "successful": 1,
        "failed": 0    },
    "_seq_no": 4,
    "_primary_term": 3}

修改

es的修改,不是真正的修改,它的機制是將,原有的文檔刪除掉,然后新建一個,并且版本號加1.那么我們將修改的內(nèi)容如下:

{
    "films" : "八百",
    "name" :"八百",
    "release_area":"中國",
    "release_time" :"八月二十一",
    "theme":"贊美小人物" 
}

再次使用PUT命令進行請求,返回結(jié)果如下:

{
    "_index": "movie",
    "_type": "_doc",
    "_id": "1",
    "_version": 4,
    "result": "updated",
    "_shards": {
        "total": 2,
        "successful": 1,
        "failed": 0    },
    "_seq_no": 3,
    "_primary_term": 2}
?

可以看到,這個時候"result": "updated",是updated``而不是created的操作,并且版本號進行了累加。

?

刪除

刪除一個文檔就很簡單了,直接指定你要刪除的文檔id就可以了,如下:

?Elasticsearch如何實現(xiàn)文檔操作

查詢

我們將剛剛刪除的那個文檔在添加進去,下面我們看一下如何查詢文檔。

查詢單個文檔

我們查詢id為1的文檔,如下:

批量查詢

批量查詢,我們會用到一個_mget的指令,如下:

http://121.36.55.57:9200/_mget

請求體為

{
    "docs":[
        {
            "_index":"movie",
            "_type":"_doc",
            "_id":"1"            
        },
        {
           "_index":"movie",
            "_type":"_doc",
            "_id":"2"  
        }
    ]
}

查詢結(jié)果

{
    "docs": [
        {
            "_index": "movie",
            "_type": "_doc",
            "_id": "1",
            "_version": 1,
            "_seq_no": 6,
            "_primary_term": 3,
            "found": true,
            "_source": {
                "films": "八百",
                "name": "八百",
                "release_area": "中國",
                "release_time": "八月二十一",
                "theme": "贊美小人物"            }
        },
        {
            "_index": "movie",
            "_type": "_doc",
            "_id": "2",
            "_version": 1,
            "_seq_no": 7,
            "_primary_term": 3,
            "found": true,
            "_source": {
                "films": "信條",
                "name": "信條",
                "release_area": "美國,英國",
                "release_time": "九月四日",
                "theme": "時空逆襲"            }
        }
    ]
}

還可以這些查詢,指定索引,指定類型,直接提供id就可以查詢

http://121.36.55.57:9200/movie/_doc/_mget

請求體如下:也是可以查到的。

{
   "ids":["1","2"]
}

感謝各位的閱讀!關(guān)于“Elasticsearch如何實現(xiàn)文檔操作”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI