索引單個文檔
集群啟動運行之后,您就可以準備索引一些數據了。Elasticsearch有很多的選項, 但是歸根結底他們做的都是一樣的事情:把JSON文檔放進Elasticsearch里面進行索引。
您可以直接通過一個簡單的PUT請求,來指定你想要添加索引的文檔, 請求體中包含一個唯一的文檔ID,一個或多個的 “域”:"值"對。
//kibana
//http://localhost:5601/app/kibana#/dev_tools/console?_g=()
PUT /customer/_doc/1
{
"name": "John Doe"
}
//curl
curl -X PUT "localhost:9200/customer/_doc/1?pretty" -H 'Content-Type: application/json' -d'
{
"name": "John Doe"
}
'
如果customer索引不存在,這個請求自動的就創建,隨后添加一個ID為1,并包含一個name域的文檔進行存儲和索引。
因為這是一個新的文檔, 所以返回的應答報文中顯示這份文檔的版本號是1。
{
"_index" : "customer",
"_type" : "_doc",
"_id" : "1",
"_version" : 1,
"result" : "created",
"_shards" : {
"total" : 2,
"successful" : 2,
"failed" : 0
},
"_seq_no" : 15,
"_primary_term" : 2
}
這個新的文檔可以立刻從集群中的任何一個節點訪問到,您可以通過指定文檔ID的GET請求來獲取該文檔。
{
"_index" : "customer",
"_type" : "_doc",
"_id" : "1",
"_version" : 1,
"_seq_no" : 14,
"_primary_term" : 2,
"found" : true,
"_source" : {
"name" : "John Doe"
}
}
批量索引文檔
倘若你有很多文檔要建索引, 您可以通過bulk API在批處理腳本里提交。通過bulk來批處理文檔比單個提交請求快的多的方式, 因為這樣可以盡可能的減少網絡往返響應的次數。
優化批處理大小主要有以下幾個因素決定:文檔的數量和復雜程度、建立索引和搜索的負載和集群可用資源。一個好的批處理其實域1000-5000個文件,總負載在5MB-15MB之間。在此,您可以通過嘗試來找到最佳的平衡點。
導如一些數據導Elasticsearch,這樣你就可以開始搜索和分析:
- 下載accounts.json樣本數據集。這些文檔是隨機生成的數據集代表用戶賬戶的以下信息:
{
"account_number": 0,
"balance": 16623,
"firstname": "Bradshaw",
"lastname": "Mckenzie",
"age": 29,
"gender": "F",
"address": "244 Columbus Place",
"employer": "Euron",
"email": "bradshawmckenzie@euron.com",
"city": "Hobucken",
"state": "CO"
}
- 通過以下_bulk請求將account數據倒入bank索引分片中:
curl -H "Content-Type: application/json" -XPOST "localhost:9200/bank/_bulk?pretty&refresh" --data-binary "@accounts.json"
curl "localhost:9200/_cat/indices?v"
通過以下命令可以看到1000個文檔已經索引成功。
curl "localhost:9200/_cat/indices?v"
yellow open bank rZ4BxAhyQU63hKm3x42_kA 1 1 1000 0 414.2kb 414.2kb