一、文件的新增
POST http://127.0.0.1:9200/{index}/{type}/{id} { "key":"value", "key2":"value2", "key2":"value2", }
這是最基本的一個文件新增語句{index}表示新增的索引如果沒有回自動建立(可以理解為資料庫),{type}標示型別如果沒有回自動建立(可以理解為表),{id}標示新增文件的id可以理解為資料庫中的主鍵,新增的文件內容就是json 格式的資料,在新增前可以不定義每個欄位的型別ES可以自動的根據型別定義欄位的屬性。
新增多個文件
POST http://127.0.0.1:9200/{index}/{type}/_bulk {"index":{"_id":"1"}} {"key1":"value1"} {"index":{"_id":"2"}} {"key1":"value2"}
_bulk 表示大量id在json裡面定義
不同索引下的批量新增
POST http://127.0.0.1:9200/_bulk { "index": { "_index": "{index}", "_type": "{type}", "_id": "{id}" }} { "key1": "key2" } { "index": { "_index": "{index}", "_type": "{type}", "_id": "{id}" }} { "key1": "key2" } { "index": { "_index": "{index}", "_type": "{type}", "_id": "{id}" }} { "key1": "key2" }
在新增時index和type必須明確,但是可不指定id的值,如果不指定會自動生成的id有22字串長度URL-safe, Base64-encoded string universally unique identifiers, 或者叫 UUID。
如果指定的id已經存在就會覆蓋原來的json資料。
在新增時指定了id但是又想避免覆蓋可以在url上新增_create或者?op_type=create引數 新增的id如果已經存在會返回409狀態。
新增成功會返回
{ "_index": "{index}",//索引名 "_type": "{type}",//型別名 "_id": "{id}",//id "_version": 1,//資料版本號 改變一次預設會加1 "result": "created", // 結果新增 "_shards": { "total": 2,//在多少個分配中進行了操作 "successful": 1,//成功建立的索引分片數量至少時1 "failed": 0//建立索引失敗的片數 }, "created": true //如果是新增為true 修改為false }
二、文件的修改
上面在新增文件的時候已經說了,在新增的時候如果自定了id如果id已經存在了就會覆蓋原來的,這就是最基本的修改。
還有一種修改是通過指令碼在原有的資料基礎上進行修改。
POST /{index}/{type}/{id}/_update { "script" : "ctx._source.key += 5" }
ctx._source 表示當前文件。在當前文件的key屬性的原有值上在加5。
可以增加新的屬性。
每次修改成功會返回一個json格式和上面新增類似,同時_version預設加1
三、文件的刪除
刪除文件比較簡單隻要發出的請求是DELETE型別同時指定index,type,id 就可以了
例如:
DELETE /{index}/{type}/{id}/_update
成功返回:
{ "found" : true, "_index" : {index}, "_type" : {type}, "_id" : {id}, "_version" : 3 }
刪除是_version也會加1。
如果文件本身不存在會得到一個 404 的狀態。found值為false
在ES內部原來的文件不會被立馬刪除,只是被標記為被刪除,但是已經不能訪問了。在後面ES會自己刪除。
四、文件的檢視
1.直接通過id獲取文件
GET /{index}/{type}/{id}?pretty
結果為:
{ "_index" : {index}, "_type" : {type}, "_id" : {id}, "_version" : 3, "found" : true, "_source":{ "key1":"value" } }
返回對應inden內type中id的資料pretty標示返回的資料以json格式化 換行輸出,方便閱讀。
_index 表示查詢的索引,_type 標示查詢的型別 ,_id 標示查詢的id , found標示查詢結果,_source 標示查詢到的源資料
在查詢過程中_type 是可選的 如果不全定可以使用_all。
在查詢是可以設定是否返回_source欄位,只需要在url後面新增_source=false就可以了,例如:
GET /{index}/{type}/{id}?_source=false&pretty
如果返回_source的欄位中只需要返回一個或某幾個欄位可以在url後面新增_source_include或者_source_exclude來設定
例如:
GET /{index}/{type}/{id}?_source_include=key1,key3,keys11*&pretty
就像上面的連線一樣多個可以用逗號隔開,也可以使用萬用字元*。
在查詢時也可以設定值返回源資料,例如:
GET /{index}/{type}/{id}/_source?pretty
2.多文件查詢
在一次中查詢多個文件,可以分別指定index,type,id來進行多個文件的查詢。查詢的結果包含查詢到的文件陣列。
例如
POST /_mget?pretty { "docs":[ {"_index":"index1","_type":"index1","_id":"1"}, {"_index":"index2","_type":"index2","_id":"2"} ] }
返回的結果結構為:
{ "docs":[ { "_index" : {index}, "_type" : {type}, "_id" : {id}, "_version" : 3, "found" : true, "_source":{ "key1":"values1" } }, { "_index" : {index}, "_type" : {type}, "_id" : {id}, "_version" : 3, "found" : true, "_source":{ "key1":"values1" } } ] }
同一個索引或型別下多條件查詢 同等於 or 查詢
POST /{index}/{type}/_mget?pretty { "docs":[ {"_id":"1","_source":false}, {"_id":"2","_source":["key1","key2"]} ] }
3.沒有任何條件的查詢
GET /{index}/{type}/_search
沒有任何條件的查詢某個index下type中的文件,結果預設會展示出前20條文件
也可以在查詢時新增條件,假設文件中有一個name欄位需要查詢出name為張三的文件
GET /{index}/{type}/_search?q=name:張三
如果查詢的條件比較複雜就需要使用結構化查詢語句(DSL)了。
轉載請註明來自:http://www.cnblogs.com/phpshen/p/7887439.html