索引单个文档
集群启动运行之后,您就可以准备索引一些数据了。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
网友评论