一旦集群启动并运行,就可以为一些数据建立索引了。Elasticsearch有各种各样的摄取选项,但最终它们都做相同的事情:将JSON文档放入到Elasticsearch索引中。

你可以直接通过一个简单的PUT请求来实现这一点,该请求指定了你想要添加文档的索引,一个唯一的文档ID,以及请求体中的一个或多个 “field”: “value” 对:

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

cURL:

curl -X PUT "localhost:9200/customer/_doc/1?pretty" -H 'Content-Type: application/json' -d' { "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

cURL:

curl -X GET "localhost:9200/customer/_doc/1?pretty"

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

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

批量索引文档

如果您有很多文档需要索引,可以使用bulk API分批提交它们。使用bulk来批量处理文档操作比单独提交请求要快得多,因为它最小化了网络往返。

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

获取一些数据到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请求将帐户数据索引到银行索引中:

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