術語介紹
文檔 Document:使用者存儲在es 中的資料文檔,es中存儲的最小單元,類似于MySQL表中的一行資料
索引 Index:由具有相同字段的文檔清單組成,表示一個文檔的集合,類似于table,在6.0後一個Index下隻有一個type。(在6後的版本會把type去除)
節點 Node:一個Elasticsearch的運作執行個體,是叢集的構成單元
叢集 Cluster:由一個或多個節點組成,對外提供服務
每一個文檔都有唯一的id辨別
自行指定
es自動生成
資料類型
核心資料類型
字元串型 text、keyword
數值型 long、integer、short、byte、double、float、half_float、scaled_float
日期類型 date
布爾類型 boolean
二進制類型 binary
範圍類型 integer_range、float_range、long_range、double_range、date_range
如果清楚知道字段要設定的類型,最好作為選擇,比如,float 比double可以節省近50%的存儲空間
複雜資料類型
數組類型 array
對象類型 object
嵌套類型 nested object (與object不同是此類型會被特殊處理,文檔不會和父文檔混在一起)
地理位置資料類型
geo_point
geo_shape
專用類型
記錄ip位址:ip
實作自動補全:completion
記錄分詞數:token_count
記錄字元串hash值:murmur3
percolator
父子查詢:join
多字段特性multi-fields
允許對同一個字段采用不同的配置,比如分詞,常見例子如 對人名實作拼音搜尋,隻需要在人名中新增一個子字段為pinyin即可(要安裝文字轉拼音插件)
es 批量導入資料後,結果
$result = $this->elasticsearch->bulkDoc($params);
//var_dump($result);
// $result結果:
array(3) {
["took"]=>int(5)
["errors"]=>bool(false)
["items"]=>array(12) {
[0]=>array(1) {
["index"]=> array(8) {
["_index"]=>string(8) "rss_data"
["_type"]=>string(8) "rss_data"
["_id"]=>string(19) "1126102154422484923"
["_version"]=> int(2)
["result"]=> string(7) "updated"
["_shards"]=> array(3) {
["total"]=> int(1)
["successful"]=> int(1)
["failed"]=> int(0)
}
["created"]=> bool(false)
["status"]=> int(200)
}
}
}
};