1、批量查詢
multi get 批量獲取
multi get api可以通過索引名、型別名、文件id一次得到乙個文件集合,文件可以來自同乙個索引庫,也可以來自不同的索引庫。
get /_mget, ,
]}//可以指定具體的字段
get /_mget
, }]}
//獲取同索引同型別下的不同文件
get /lib/user/_mget
,
]}//也可以使用下面這種更為簡化的寫法
get /lib/user/_mget
bulk 批量操作
(1)比如,我這裡,在$es_home裡,新建一檔案,命名為requests。(這裡為什麼命名為request,去看官網就是)在linux裡,有無字尾沒區別。
[hadoop@djt002 elasticsearch-2.4.3]$ vi requests }}}}
(2)執行命令
curl -put '192.168.80.200:9200/_bulk' --data-binary @requests;或 curl -xpost '192.168.80.200:9200/_bulk' --data-binary @requests;
bulk的格式:
}\n
\n (請求體)
action:(行為),包含create(文件不存在時建立)、update(更新文件)、index(建立新文件或替換已用文件)、delete(刪除乙個文件)。
create和index的區別:如果資料存在,使用create操作失敗,會提示文件已存在,使用index則可以成功執行。
metadata:(行為操作的具體索引資訊),需要指明資料的_index、_type、_id。
示例:
}
批量新增
post /lib2/books/_bulk} \\行為:索引資訊
\\請求體}}
`}//返回結果
, "_seq_no": 0,
"_primary_trem": 1
"status": 200
}},
...
]}
批量刪除
刪除的批量操作不需要請求體
post /lib/books/_bulk} //刪除的批量操作不需要請求體
} //請求體
} //沒有指定_id,elasticsearch將會自動生成_id
//請求體
} //更新動作不能缺失_id,文件不存在更新將會失敗
} //請求體
bluk一次最大處理多少資料量
bulk會將要處理的資料載入記憶體中,所以資料量是有限的,最佳的資料兩不是乙個確定的資料,它取決於你的硬體,你的文件大小以及複雜性,你的索引以及搜尋的負載。
一般建議是1000-5000個文件,大小建議是5-15mb,預設不能超過100m,可以在es的配置檔案(即$es_home下的config下的elasticsearch.yml)中,bulk的執行緒池配置是核心數+1。
bulk批量操作的json格式解析
bulk的格式:
}\n
\n (請求體)
不用將其轉換為json物件,直接按照換行符切割json,記憶體中不需要json文字的拷貝。
對每兩個一組的json,讀取meta,進行document路由。
直接將對應的json傳送到node上。
為什麼不使用如下格式:
將json陣列解析為jsonarray物件,在記憶體中就需要有乙份json文字的拷貝,寧外好友乙個jsonarray物件。
解析json陣列裡的每個json,對每個請求中的document進行路由。
為路由到同乙個shard上的多個請求,建立乙個請求陣列。
將這個請求陣列序列化。
誰在使用Elasticsearch
github github使用elasticsearch搜尋20tb的資料,包括13億的檔案和1300億行的 這個不用介紹了吧,碼農們都懂的,github在2013年1月公升級了他們的 搜尋,由solr轉為elasticsearch,目前集群規模為26個索引儲存節點和8個客戶端節點 負責處理搜尋請求...
ElasticSearch使用入門
es的安裝 啟動 cd.elasticsearch 2 4 3 bin elasticsearch bin elasticsearch d 後台執行 es安裝驗證 注意 預設啟動的時候es繫結的網路ip是本機127.0.0.1,只能通過這個ip訪問 兩種修改方式 1 修改config elastic...
ElasticSearch使用學習
elasticsearch是乙個基於lucene的搜尋服務,它通過倒排索引的方法提供了全文搜尋的能力。1 插入資料 elasticsearch中存放資料的為文件,有索引及型別名,如下插入兩文件 2 檢索文件 1 檢索id為1的文件 curl x get elasticsearch.in.netwa....