加载示例数据
优质
小牛编辑
125浏览
2023-12-01
加载示例数据
本节内容依赖以下数据:
- 威廉·莎士比亚全集,解析成合适的字段。点击这里下载这个数据集: shakespeare.json.
- 一组虚构的账户与随机生成的数据。点击这里下载这个数据集: accounts.zip.
- 一组随机生成的日志文件。点击这里下载这个数据集: logs.jsonl.gz.
其中有两个数据集是压缩文件,可使用以下命令解压缩文件:
unzip accounts.zip
gunzip logs.jsonl.gz
莎士比亚数据集的组织方式如下:
{
"line_id": INT,
"play_name": "String",
"speech_number": INT,
"line_number": "String",
"speaker": "String",
"text_entry": "String",
}
帐户数据集的组织方式如下:
{
"account_number": INT,
"balance": INT,
"firstname": "String",
"lastname": "String",
"age": INT,
"gender": "M or F",
"address": "String",
"employer": "String",
"email": "String",
"city": "String",
"state": "String"
}
日志数据集的结构有许多不同的字段,以下是其中比较重要的字段:
{
"memory": INT,
"geo.coordinates": "geo_point"
"@timestamp": "date"
}
在莎士比亚和日志数据集加载之前,我们需要为字段设置 _映射_。 映射把索引中的文档按逻辑分组并指定了字段的属性,比如字段的可搜索性或者该字段是否是 _tokenized_ ,或分解成单独的单词。
使用以下命令在终端(如 bash
)建立一个莎士比亚数据集的映射:
PUT /shakespeare
{
"mappings": {
"doc": {
"properties": {
"speaker": {"type": "keyword"},
"play_name": {"type": "keyword"},
"line_id": {"type": "integer"},
"speech_number": {"type": "integer"}
}
}
}
}
这个映射指定了数据集的以下特点:
- 因为 _speaker_ 和 _play_name_ 字段是关键字字段,它们不需要分析。字符串即使包含多个词也仍被视为一个整体。
- _line_id_ 和 _speech_number_ 字段是整数。
日志数据集映射需要利用 geo_point
类型来标记经度/纬度地理位置字段。
使用下面的命令来为日志建立 geo_point
映射:
PUT /logstash-2015.05.18
{
"mappings": {
"log": {
"properties": {
"geo": {
"properties": {
"coordinates": {
"type": "geo_point"
}
}
}
}
}
}
}
PUT /logstash-2015.05.19
{
"mappings": {
"log": {
"properties": {
"geo": {
"properties": {
"coordinates": {
"type": "geo_point"
}
}
}
}
}
}
}
PUT /logstash-2015.05.20
{
"mappings": {
"log": {
"properties": {
"geo": {
"properties": {
"coordinates": {
"type": "geo_point"
}
}
}
}
}
}
}
账户数据集不需要任何映射,基于这一点我们准备用 Elasticsearch bulk
API 来加载数据集,命令如下:
curl -H 'Content-Type: application/x-ndjson' -XPOST 'localhost:9200/bank/account/_bulk?pretty' --data-binary @accounts.json
curl -H 'Content-Type: application/x-ndjson' -XPOST 'localhost:9200/shakespeare/doc/_bulk?pretty' --data-binary @shakespeare_6.0.json
curl -H 'Content-Type: application/x-ndjson' -XPOST 'localhost:9200/_bulk?pretty' --data-binary @logs.jsonl
执行这些命令可能需要一段时间,取决于可用的计算资源。
使用下面的命令来验证加载是否成功:
GET /_cat/indices?v
您应该会看到类似下面的输出:
health status index pri rep docs.count docs.deleted store.size pri.store.size
yellow open bank 5 1 1000 0 418.2kb 418.2kb
yellow open shakespeare 5 1 111396 0 17.6mb 17.6mb
yellow open logstash-2015.05.18 5 1 4631 0 15.6mb 15.6mb
yellow open logstash-2015.05.19 5 1 4624 0 15.7mb 15.7mb
yellow open logstash-2015.05.20 5 1 4750 0 16.4mb 16.4mb