索引一些文档

一旦你有一个集群启动并运行了,你就能索引一些数据。Elasticsearch 有多种接收选项,但他们最终都做了同样的事:将 JSON 文档存入Elasticsearch 索引中。

你可以通过一个简单的 PUT 请求直接执行这种操作,并且在请求体中指定要添加文档的索引、唯一的文档 ID 以及一个或者多个“字段-数值”对:

  1. PUT /customer/_doc/1
  2. {
  3. "name": "John Doe"
  4. }

如果 customer 索引还不存在,请求将自动创建它,添加一个 ID 为1的文档,并存储和索引名字字段。

由于这是一个新的文档,这个响应表明这个操作的结果为版本1的文档被创建:

  1. {
  2. "_index" : "customer",
  3. "_type" : "_doc",
  4. "_id" : "1",
  5. "_version" : 1,
  6. "result" : "created",
  7. "_shards" : {
  8. "total" : 2,
  9. "successful" : 2,
  10. "failed" : 0
  11. },
  12. "_seq_no" : 26,
  13. "_primary_term" : 4
  14. }

新的文档可以从集群中的任一节点立即获得。你可以通过指定它的文档 ID 的 GET 请求来检索它:

  1. GET /customer/_doc/1

响应表明指定 ID 的文档被找到,并显示了被索引的原始源字段。

  1. {
  2. "_index" : "customer",
  3. "_type" : "_doc",
  4. "_id" : "1",
  5. "_version" : 1,
  6. "_seq_no" : 26,
  7. "_primary_term" : 4,
  8. "found" : true,
  9. "_source" : {
  10. "name": "John Doe"
  11. }
  12. }

批量索引文档

如果你有大量文档要索引,你能通过批量 APIbulk API) 来批量提交它们。批量文档操作比单独提交请求显著更快,因为它极简了网络往返。

最佳的批量数量取决于许多因素:文档的大小和复杂度、索引和搜索的负载以及集群可用资源。一种好的方式是批量处理 1,000 到 5,000 个文档,且总负载在 5 MB 到 15 MB。基于这个,你能尝试找到最佳的方式。

向 Elasticsearch 导入一些数据,你就能开始搜索和分析:

  1. 下载 accounts.json 示例数据集。这个随机生成的数据集文档表示具体以下信息的用户账户:
  1. {
  2. "account_number": 0,
  3. "balance": 16623,
  4. "firstname": "Bradshaw",
  5. "lastname": "Mckenzie",
  6. "age": 29,
  7. "gender": "F",
  8. "address": "244 Columbus Place",
  9. "employer": "Euron",
  10. "email": "bradshawmckenzie@euron.com",
  11. "city": "Hobucken",
  12. "state": "CO"
  13. }
  1. 使用以下的 _bulk 请求将账户数据索引到银行(bank) 索引中:
  1. curl -H "Content-Type: application/json" -XPOST "localhost:9200/bank/_bulk?pretty&refresh" --data-binary "@accounts.json"
  2. curl "localhost:9200/_cat/indices?v=true"

响应表明 1,000 个文档被成功索引:

  1. health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
  2. yellow open bank l7sSYV2cQXmu6_4rJWVIww 5 1 1000 0 128.6kb 128.6kb

原文链接