Elasticsearch為開發人員提供了一套基於Http協議的Restful介面,只需要構造rest請求並解析請求返回的json即可實現訪問Elasticsearch伺服器。Elasticsearch的API介面功能豐富,包含叢集、監控、部署管理等,也包含常用的文檔、索引操作,本文主要是使用Postman工具對文檔操作相關的api做學習記錄。
新增文檔
PUT方式:http://localhost:9200/store/product/1 //指定id,存在則更新,不存在則新增
POST方式:http://localhost:9200/store/product //自動產生id
其中store表示Index,product表示Type,數字1表示的是Document(文檔)的主鍵,主鍵可以是任意的形式,也可以不指定主鍵,Elasticsearch將會自動產生一個唯一主鍵,但是必須是post方式提交請求。
測試:
返回結果中_id:自動產生的主鍵,_shards:表示分區資訊,total:2表示有兩個分區,successful:1 表示成功賦值了一份。_version:1表示該文檔的版本號碼,每修改一次,版本號碼都會自增。
Elasticseach-head中查看資料:
根據主鍵查詢
GET方式:http://localhost:9200/store/product/nMWgs2UBQISnN0EoTXZL Elasticserach提供的是restful api,很容易理解這個介面形式。
返回結果中_source表示返回的Doucment(文檔)類容,其他幾個是Elasticsearch文檔結構欄位。如果只需要_source內容不需要其他結構欄位,還可以在請求url上加上屬性”/_source”,將只返回source部分容,請求:http://localhost:9200/store/product/1/_source
根據主鍵更新文檔
在 Elasticsearch 中文檔是 不可改變 的,不能修改它們。如果想要更新現有的文檔,需要 重建索引或者進行替換,更新介面同新增文檔介面,使用/index/type/key的形式。Elasticsearch的實現方式是將舊的文檔標記為刪除,並增加一個全新的文檔。標記為刪除的文檔將不再可以直接操作,但它並不會立即消失,Elasticsearch會在後台清理這些已標記為刪除的文檔。
如果明確知道修改文檔的哪部分資料,還可以通過在上述請求URL後面添加“/_update”並使用POST的方式,來更新資料,雖然這個看上去像是直接更新的,實際上也是重新建立了一個新的文檔,處理過程為是先從就的文檔中構建Json資料,並根據請求修改的欄位修改json資料,然後將就文檔標記為刪除,添加一個新文檔。請求如下:
如果並發修改文檔,可以使用version欄位實樂觀鎖,修改的目的文件的版本號碼version和傳入的不一致,則會修改失敗,請求url:http://localhost:9200/store/product/1/_update?version=4
根據主鍵刪除
使用DELETE方式,請求格式 host/index/type/key
搜尋文檔
Elasticsearch提供了強大的搜尋功能,搜尋參數可以放在請求url上,也可以放在body中,請求基本格式: host/index/type/_search
- GET方式+ url參數的方式進行全文檢索搜尋
返回結果中_score是搜尋引擎的概念,表示相關度,分數越高表示此文檔與搜尋條件關鍵字的匹配程度越高。
2. 使用match運算式進行全文檢索搜尋
3. elasticsearch也支援分頁查詢,使用from和size兩個參數指定頁碼和頁大小即可。
更詳細的說明參考官方文檔:
中文文檔:www.elastic.co/guide/cn/elasticsearch/guide/current/index.html
英文文檔: