加载样本数据
贡献者 : 片刻, 那伊抹微笑,ApacheCN,Apache中文网
本节中的教程依赖以下数据集 :
- 莎士比亚全集,适当解析成多个字段。下载此数据,点击这里 : shakespeare.json。
- 一组虚构的账户,随机生成的数据。下载此数据,点击这里 : accounts.zip
- 一组随机生成的日志文件。下载此数据,点击这里 : logs.jsonl.gz
数据集的两个被压缩。使用下面的命令来解压缩文件 :
unzip accounts.zip
gunzip logs.jsonl.gz
Shakespeare(莎士比亚)数据集以下列 schema(模式)进行组织 :
{
"line_id": INT,
"play_name": "String",
"speech_number": INT,
"line_number": "String",
"speaker": "String",
"text_entry": "String",
}
accounts(帐户)数据集以下列 schema(模式)进行组织 :
{
"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"
}
对于日志数据集的方案有几十个不同的 fields,但在本教程中使用更多的是 :
{
"memory": INT,
"geo.coordinates": "geo_point"
"@timestamp": "date"
}
在此之前,我们加载莎士比亚数据集,我们需要建立一个映射的字段。映射划分的文件索引成逻辑组,并指定一个 field 的特征,如该领域的搜索性或是否它的标记化,或分解成单独的词。
使用以下命令来为莎士比亚数据集设置 mapping(映射):
curl -XPUT http://localhost:9200/shakespeare -d '
{
"mappings" : {
"_default_" : {
"properties" : {
"speaker" : {"type": "string", "index" : "not_analyzed" },
"play_name" : {"type": "string", "index" : "not_analyzed" },
"line_id" : { "type" : "integer" },
"speech_number" : { "type" : "integer" }
}
}
}
}
';
该 mapping(映射)指定了数据集下列特质 :
- speaker 字段是不分析的字符串。在这个 filed(字段)中的字符串被视为一个单独的单元,即使在这个 fileld(字段)中有多个单词。
- 这同样适用于 play_name 字段。
- line_id 和 speech_number 字段是整数。
日志数据集需要映射,通过将 geo_point
类型应用于这些字段,将日志中的 latitude(纬度)/longitude(纬度)对标记为地理位置。
使用以下命令建立日志 geo_point mappig(映射):
curl -XPUT http://localhost:9200/logstash-2015.05.18 -d '
{
"mappings": {
"log": {
"properties": {
"geo": {
"properties": {
"coordinates": {
"type": "geo_point"
}
}
}
}
}
}
}
';
curl -XPUT http://localhost:9200/logstash-2015.05.19 -d '
{
"mappings": {
"log": {
"properties": {
"geo": {
"properties": {
"coordinates": {
"type": "geo_point"
}
}
}
}
}
}
}
';
curl -XPUT http://localhost:9200/logstash-2015.05.20 -d '
{
"mappings": {
"log": {
"properties": {
"geo": {
"properties": {
"coordinates": {
"type": "geo_point"
}
}
}
}
}
}
}
';
accounts(账目)数据集不需要任何 mapping(映射),所以在这一点上,我们已经准备好使用 Elasticsearch 的 bulk API 加载数据集,使用以下命令 :
curl -XPOST 'localhost:9200/bank/account/_bulk?pretty' --data-binary @accounts.json
curl -XPOST 'localhost:9200/shakespeare/_bulk?pretty' --data-binary @shakespeare.json
curl -XPOST 'localhost:9200/_bulk?pretty' --data-binary @logs.jsonl
这些命令可能需要一些时间来执行,这取决于可用的计算资源。
验证成功加载使用下面的命令 :
curl 'localhost:9200/_cat/indices?v'
您应该看到类似以下的输出 :
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