# 索引一些文档

集群启动并运行后，就可以为某些数据建立索引了。Elasticsearch有多种摄取选项，但最终它们都做同样的事情：将JSON文档放入Elasticsearch索引中。

您可以通过一个简单的PUT请求直接执行此操作，该请求指定要添加文档的索引，唯一的文档ID以及一对或多对`"field": "value"`在请求正文中：

```
PUT /customer/_doc/1
{
  "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" : 26,
  "_primary_term" : 4
}
```

可以从群集中的任何节点立即使用新文档。您可以使用指定其文档ID的GET请求检索它：

```
GET /customer/_doc/1
```

该响应表明找到了具有指定ID的文档，并显示了已索引的原始源字段。

```
{
  "_index" : "customer",
  "_type" : "_doc",
  "_id" : "1",
  "_version" : 1,
  "_seq_no" : 26,
  "_primary_term" : 4,
  "found" : true,
  "_source" : {
    "name": "John Doe"
  }
}
```

## 批量索引文档

如果您有很多要编制索引的文档，则可以使用[批量API](https://www.elastic.co/guide/en/elasticsearch/reference/7.x/docs-bulk.html)批量提交。使用批量处理批处理文档操作比单独提交请求要快得多，因为它可以最大程度地减少网络往返次数。

最佳批处理大小取决于许多因素：文档大小和复杂性，索引编制和搜索负载以及群集可用的资源。一个好的起点是批处理1,000至5,000个文档，总有效负载在5MB至15MB之间。从那里，您可以尝试找到最佳位置。

要将一些数据导入Elasticsearch，您可以开始搜索和分析：

1.  下载[`accounts.json`](https://github.com/elastic/elasticsearch/blob/master/docs/src/test/resources/accounts.json?raw=true)样本数据集。此随机生成的数据集中的文档代表具有以下信息的用户帐户：

    ```javascript
     {
         "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"
     }
    ```
2.  `bank`使用以下`_bulk`请求将帐户数据索引到索引中：

    ```bash
     curl -H "Content-Type: application/json" -XPOST "localhost:9200/bank/_bulk?pretty&refresh" --data-binary "@accounts.json"
     curl "localhost:9200/_cat/indices?v"
    ```

    响应表明成功索引了1,000个文档。

    ```
     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
    ```
