程式中大多的實體或物件能夠被序列化為包含鍵值對的json物件,鍵(key)是字段(field)或屬性(property)的名字,值(value)可以是字串、數字、波爾型別、另乙個物件、值陣列或者其他特殊型別,比如表示日期的字串或者表示地理位置的物件。
文件元資料(document metadata):
乙個文件不只有資料。它還包含了元資料(metadata)——關於文件的資訊。三個必須的元資料節點是:
節點說明
_index
文件儲存的地方
_type
文件代表的物件的類
_id
文件的唯一標識
索引(index)類似於關係型資料庫裡的「資料庫」——它是我們儲存和索引關聯資料的地方。
事實上,我們的資料被儲存和索引在分片(shards)中,索引只是乙個把乙個或多個分片分組在一起的邏輯空間。然而,這只是一些內部細節——我們的程式完全不用關心分片。對於我們的程式而言,文件儲存在索引(index)中。剩下的細節由elasticsearch關心既可。後面會繼續**如何建立並管理索引,但現在,我們將讓elasticsearch為我們建立索引。我們唯一需要做的僅僅是選擇乙個索引名。這個名字必須是全部小寫,不能以下劃線開頭,不能包含逗號。讓我們使用
website
做為索引名。
在關係型資料庫中,我們經常將相同類的物件儲存在乙個表裡,因為它們有著相同的結構。同理,在elasticsearch中,我們使用相同型別(type)的文件表示相同的「事物」,因為他們的資料結構也是相同的。
_type
的名字可以是大寫或小寫,不能包含下劃線或逗號。我們將使用blog
做為型別名。
id僅僅是乙個字串,它與_index
和_type
組合時,就可以在elasticsearch中唯一標識乙個文件。當建立乙個文件,你可以自定義_id
,也可以讓elasticsearch幫你自動生成。
ps:還有其它部分其它元資料,後續再介紹。
如果你的文件有自然的識別符號(例如user_account
字段或者其他值表示文件),你就可以提供自己的_id
,使用這種形式的index
api:
put ///
{"key": "value"...}
如,put /website/blog/123
elasticsearch中每個文件都有版本號,每當文件變化(包括刪除)都會使_version
增加。後續我們將**如何使用_version
號確保你程式的一部分不會覆蓋掉另一部分所做的更改。
如果我們的資料沒有自然id,我們可以讓elasticsearch自動為我們生成。請求結構發生了變化:put
方法——「在這個url中儲存文件」
變成了post
方法——"在這個文件下儲存文件"
。(注:原來是把文件儲存到某個id對應的空間,現在是把這個文件新增到某個_type
下)。
url現在只包含_index
和_type
兩個字段:
post /website/blog/
響應內容與剛才類似,只有_id
字段變成了自動生成的值:
文件在elasticsearch中是不可變的——我們不能修改他們。如果需要更新已存在的文件,我們可以使用《索引文件》提到的index
api 重建索引(reindex) 或者替換掉它。
put /website/blog/123
在響應中,我們可以看到elasticsearch把_version
增加了。
在後面**update
api,這個api 似乎 允許你修改文件的區域性,但事實上elasticsearch遵循與之前所說完全相同的過程,這個過程如下:
從舊文件中檢索json
修改它刪除舊文件
索引新文件
唯一的不同是update
api完成這一過程只需要乙個客戶端請求既可,不再需要get
和index
請求了。
刪除文件的語法模式與之前基本一致,只不過要使用delete
方法:
delete /website/blog/1234
如果文件被找到,elasticsearch將返回200 ok
狀態碼和以下響應體。注意_version
數字已經增加了。
如果文件未找到,我們將得到乙個404 not found
狀態碼,響應體是這樣的:
為ElasticSearch新增HTTP基本認證
es的http連線沒有提供任何的許可權控制措施,一旦部署在公共網路就容易有資料洩露的風險,尤其是加上類似elasticsearch head這樣友好的前端介面,簡直讓你的資料瞬間裸奔在黑客的眼皮底下。專案上線前做十萬伏特的防護當然不現實,但至少,我們不要裸奔,穿一套比基尼吧。而做乙個簡單的http認...
Elasticsearch新增拼音搜尋支援
乙份不錯的資料 elastic 搜尋開發實戰 拼音分詞擴充套件elasticsearch analysis pinyin安裝 文件 替換為 實際 index 替換為 實際 type put tokenizer link id update time 分詞測試 get analyze返回,1 新建索引...
Elasticsearch新增密碼驗證
es集群開啟密碼驗證 elastic search簡稱為es,為乙個分布式的搜尋引擎,預設的es部署是沒有密碼驗證的,很容易會出現安全問題。但是本文設定密碼之後,發現是使用base64加密的,呵呵,安全性也好不到 去。在es7.0版本以後安裝包預設自帶了xpack功能,所以只需要在es包下的conf...