本地英文版地址: ../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 中去:
-
下载演示数据
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
请求来将用户账户数据索引到名称为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