原英文版地址: https://www.elastic.co/guide/en/elasticsearch/reference/7.7/getting-started-index.html, 原文档版权归 www.elastic.co 所有
本地英文版地址: ../en/getting-started-index.html

索引一些文档

一旦集群启动并运行,就可以索引一些数据了。 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 的文档,并显示已索引的原始文档的源字段 (_source)。

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

批量索引文档

如果有许多文档要索引,可以使用 bulk API 批量提交。 使用批量批处理文档操作比单独提交请求要快得多,因为它将请求的网络往返次数降到最低。

最佳的批次大小取决于多个因素: 文档大小和复杂度,索引和搜索负载,以及集群可用的资源。 一个很好的起点是批处理 1,000 至 5,000 个文档,且总负载(总文档大小)在 5MB 到 15 MB 之间。 然后,你可以尝试找到最佳点。

在开始搜索和分析之前,你需要获取一些数据并导入到 Elasticsearch 中去:

  1. 下载演示数据 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"
    }
  2. 用下面的 _bulk 请求来将用户账户数据索引到名称为 bank 的索引中。

    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