2.2. 创建文档
插入数据
一旦你启动并运行集群,你就可以创建数据了。Elasticsearch有多种方式插入数据,但最终它们都执行同样的操作,将JSON文档放入Elasticsearch索引中。
你可以使用简单的PUT请求去执行操作,请求须指定文档的索引名称,唯一的文档ID,以及请求体中一个或多个键值对。
PUT /customer/_doc/1
{
"name": "John Doe"
}
这个请求(如不存在)将自动创建一个ID为1的新文档,并储存键值对,并为其建立索引。
由于这是一个新文档,返回的结果显示新创建的文档版本号为1:
{
"_index" : "customer",
"_type" : "_doc",
"_id" : "1",
"_version" : 1,
"result" : "created",
"_shards" : {
"total" : 2,
"successful" : 2,
"failed" : 0
},
"_seq_no" : 26,
"_primary_term" : 4
}
你可以在集群里任意节点去获取文档,你也可以GET请求指定ID文档
GET /customer/_doc/1
返回结果显示找到里对应的指定文档,并返回了原始字段信息:
{
"_index" : "customer",
"_type" : "_doc",
"_id" : "1",
"_version" : 1,
"_seq_no" : 26,
"_primary_term" : 4,
"found" : true,
"_source" : {
"name": "John Doe"
}
}
批量插入数据
如果有大量的文档需要插入,你可以使用BULK API
批量插入数据。使用Bulk API
要比单独请求提交要快,是因为它最大限度地减少了网络传输次数。
最佳批量插入大小取决于许多因素:文档大小和复杂性、索引、搜索负载以及集群的可用资源。每次批量处理最好在1000 ~ 5000个文档,文档大小最好是在5M ~ 15M之间。
将数据批量导入Elasticsearch,你就可以开始搜索和分析了。
下载acounts.jsondemo数据。
数据git地址github.com/elastic/elasticsearch/b...
随机生成的demo数据展示了以下的用户信息:
{
"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"
}
指定id创建
{"index":{"_id":"101"}}
{"name":"张三"}
{"index":{"_id":"102"}}
{"name":"李四"}
自动id创建
{"index":{}}
{"name":"张三1"}
{"index":{}}
{"name":"李四1"}
使用_bulk
请求将账户数据导入到银行文档中:
curl -H "Content-Type: application/json" -XPOST "localhost:9200/bank/_bulk?pretty&refresh" --data-binary "@accounts.json"
curl "localhost:9200/_cat/indices?v"
返回结果显示了成功导入了1000个文档
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
yellow open bank l7sSYV2cQXmu6_4rJWVIww 5 1 1000 0 128.6kb 128.6kb
本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。