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数据。随机生成的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"
}

使用_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

本文章首发在 LearnKu.com 网站上。

本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
上一篇 下一篇
CrazyZard
贡献者:2
讨论数量: 0
发起讨论 只看当前版本


暂无话题~