程式中大多的實體或物件能夠被序列化為包含鍵值對的json物件, 鍵(key)是字段(field)或屬性(property)的名字, 值(value)可以是字串、 數字、 波爾型別、 另乙個物件、 值陣列或者其他特殊型別, 比如表示日期的字串或者表示地理位置的物件。
,
"accounts": [,]
}
文件元資料
乙個文件不只有資料。 它還包含了元資料(metadata)——關於文件的資訊。 三個必須的元資料節點是:
節點說明
_index
文件儲存的地方
_type
文件代表的物件的類
_id文件的唯一標識
使用自己的id
put /website/blog/123
自增id
post /website/blog/
想要從elasticsearch中獲取文件, 我們使用同樣的 _index 、 _type 、 _id , 但是http方法改為 get :
get /website/blog/123?pretty
檢索文件的一部分
get /website/blog/123?_source=title,text
get /website/blog/123/_source
put /website/blog/123
在響應中, 我們可以看到elasticsearch把 _version 增加了
請記住 _index 、 _type 、 _id 三者唯一確定乙個文件。 所以要想保證文件是新加入的, 最簡單的方式是使用 post 方法讓elasticsearch自動生成唯一 _id :
post /website/blog/
第一種方法使用 op_type 查詢引數:
put /website/blog/123?op_type=create
或者第二種方法是在url後加 /_create 做為端點:
put /website/blog/123/_create
如果請求成功的建立了乙個新文件, elasticsearch將返回正常的元資料且響應狀態碼是 201 created 。另一方面, 如果包含相同的 _index 、 _type 和 _id 的文件已經存在, elasticsearch將返回 409 conflict 響應狀態碼
delete /website/blog/123
put /website/blog/1?version=1
<1>
我們只希望文件的 _version 是 1 時更新才生效。
然而, 如果我們重新執行相同的索引請求, 依舊指定 version=1 , elasticsearch將返回 409 conflict 狀態的http響應。 響應體類似這樣:
post /website/blog/1/_update
}
像elasticsearch一樣, 檢索多個文件依舊非常快。 合併多個請求可以避免每個請求單獨的網路開銷。 如果你需要從elasticsearch中檢索多個文件, 相對於乙個乙個的檢索, 更快的方式是在乙個請求中使用multi-get或者 mget api。
mget api引數是乙個 docs 陣列, 陣列的每個節點定義乙個文件的 _index 、 _type 、 _id 元資料。 如果你只想檢索乙個或幾個確定的字段, 也可以定義乙個 _source 引數:
get /_mget
,
]}
如果你想檢索的文件在同乙個 _index 中(甚至在同乙個 _type 中) , 你就可以在url中定義乙個預設的 /_index 或者 /_index/_type 。
你依舊可以在單獨的請求中使用這些值:
get /website/blog/_mget
,
]}
事實上, 如果所有文件具有相同 _index 和 _type , 你可以通過簡單的 ids 陣列來代替完整的 docs 陣列:
get /website/blog/_mget
mget 允許我們一次性檢索多個文件一樣, bulk api允許我們使用單一請求來實現多個文件的 create 、 index 、 update 或 delete 。 這對索引類似於日誌活動這樣的資料流非常有用, 它們可以以成百上千的資料為乙個批次按序進行索引。
post /_bulk} }
} }}
多大才算太大?
試著批量索引標準的文件, 隨著大小的增長, 當效能開始降低, 說明你每個批次的大小太大了。 開始的數量可以在1000~5000個文件之間, 如果你的文件非常大, 可以使用較小的批次。
通常著眼於你請求批次的物理大小是非常有用的。 一千個1kb的文件和一千個1mb的文件大不相同。 乙個好的批次最好保持
在5-15mb大小間。
ElasticSearch入坑指南之概述及安裝
恢復內容開始 elasticsearch入坑指南之概述及安裝 elasticsearch 簡稱es 基於lucene的分布式全文檢索引擎。使用es可以實現近實時的儲存 檢索及海量資料的分析。es可以應用於以下場景 es核心概念 水平拆分 拓展 通過分布式和跨shared操作提公升效能及吞吐 在 sh...
ElasticSearch中文分詞(二)
1 中文分詞 中文分詞的難點在於,在漢語中沒有明顯的詞彙分界點,如在英語中,空格可以作為分隔符,如果分隔不正確就會造成歧義。常用中文分詞器,ik jieba thulac等,推薦使用ik分詞器。目錄下即可。如果使用docker執行 docker cp elasticsearch analysis i...
ElasticSearch(二)核心概念
1 near realtime nrt 近實時,兩個意思,從寫入資料到資料可以被搜尋到有乙個小延遲 大概1秒 基於es執行搜尋和分析可以達到秒級 2 cluster 集群,包含多個節點,每個節點屬於哪個集群是通過乙個配置 集群名稱,預設是elasticsearch 來決定的,對於中小型應用來說,剛開...