Curl操作Elasticsearch的常用方法

2022-02-12 13:52:16 字數 2679 閱讀 6878

elasticsearch對於文件操作,提供了以下幾種api,本文就說明如何使用curl方式來呼叫這些api。

單文件操作api

1、* index api 索引文件 *

為文件建立索引

'返回結果

,

"_index" : "twitter",

"_type" : "tweet",

"_id" : "1",

"_version" : 1,

"created" : true,

"result" : created

}

使用這個api傳送兩次請求,即便插入的資料一模一樣,仍然會在索引中建立兩個文件。如果不能接受這個結果,那就需要使用 _update api,並將detect_noop引數開啟。

2、* get api 獲取文件 *

該api能夠基於文件id獲取乙份格式化的json文件。除了支援通過get獲取文件資訊,也支援通過head方法檢查文件是否存在。

curl -xget 'localhost:9200/twitter/tweet/0?pretty'

curl -xhead 'localhost:9200/twitter/tweet/0?pretty'

返回結果如下

}

3、* delete api 刪除文件 *

該api允許我們根據id刪除某個索引中的文件。

curl -xdelete 'localhost:9200/twitter/tweet/1?pretty'
結果如下

,

"found" : true,

"_index" : "twitter",

"_type" : "tweet",

"_id" : "1",

"_version" : 2,

"result": "deleted"

}

刪除文件時,如果該索引不存在,則elasticsearch會自動建立索引和自動對映關係。這個官方文件中有這個文字,但是我自己實驗的卻沒有這樣的結果,而是收到 index_not_found_exception 的錯誤。

4、* delete by query api 根據條件刪除 *

該api會對滿足查詢條件的所有文件執行刪除操作。示例如下

}}'返回結果

,

"throttled_millis": 0,

"requests_per_second": -1.0,

"throttled_until_millis": 0,

"total": 119,

"failures" : [ ]

}

該api接受的url引數prettyrefreshwait_for_completionwait_for_active_shardstimeout。如果想要獲取正在執行的刪除人物,可以通過task api。

curl -xget 'localhost:9200/_tasks?detailed=true&actions=*/delete/byquery&pretty'
也可以對刪除操作進行取消。

curl -xpost 'localhost:9200/_tasks/task_id:1/_cancel?pretty'
5、* update api 更新api *

我覺得這是很多人對elk誤解最深的地方,以為elk不支援更新功能,資料只能一次性匯入,其實elk是有更新api的。更新api首先從es獲取文件,然後根據請求對文件進行更新,最後將更新儲存至伺服器。這個過程中使用版本號 version 來確保文件沒有被其他人修改過。

'也可以通過script進行更新

}}'6、* update by query api 根據條件更新 *

類似於根據條件查詢,這個api可以根據條件對多個文件進行更新。

}}'多文件操作api

1、* multi get api 獲取多個文件*

multi get api允許我們根據索引、型別和id來獲取多個文件,返回結果放在docs陣列中。

,

]}'2、bulk api

bulk api提供了在一次請求中更新大量文件的可能,這將極大的提高索引的速度。

3、reindex api 重建索引

_reindex的基本工作方式是將乙個索引拷貝到新的索引中。

, "dest": }'

3、term vectors

todo 待補充

4、multi termvectors api

todo 待補充

5、?refresh

todo 待補充

本文所有示例基於elk 5.6。

windows 簡單實用Elasticsearch

到解壓好的elasticsearch下的bin目錄中 然後執行如下命令 elasticsearch.bat 安裝elasticsearch head外掛程式。執行plugin install mobz elasticsearch head命令。安裝完成後在d elasticsearch 1.7.1 ...

檔案操作 curl

開啟檔案並且以寫入的形式,fopen如果檔案不存在會新建,但不會新建資料夾 newfile fopen newfilepath,w 寫入檔案 fwrite newfile,data 關閉檔案 fclose newfile 初始化curl ch curl init 設定curl 引數 curl set...

curl操作封裝

class curl curl簡單封裝 get post class curl curl setopt ch,curlopt url,url curl setopt ch,curlopt returntransfer,1 curl setopt ch,curlopt header,0 curl se...