导入数据
Elasticsearch和Kibana的结合就是用来检索和分析数据的,那么这个数据怎么来,肯定是导入进去的。
一、导入数据的说明
Elasticsearch在官方的文档探索你的数据中,有说需要将本地数据导入到Elasticsearch中。
那么怎么导入,这个就是一个问题了。
二、导入数据
在这边只需要导入数据即可。ES默认会帮助我们建立Key-Value的映射,并且会给出默认的Key的类型。默认的可能不符合你的要求,请看第三步。
例如:
line_id、play_name这样的是键(key)
INT、String这样的是键的类型。
"line_id": INT,
"play_name": "String",
"speech_number": INT,
"line_number": "String",
"speaker": "String",
"text_entry": "String",
}
Elasticsearch文档中要求的是JSON规范的文档数据,那么在这里可以很方便的获取到符合标准的JSON文档Json生成。
我这边已经有一个生成好的JSON文档数据文件。
~/Documents/es ⌚ 15:02:00
$ ls
accounts.json
注意:一定要在这个文件所在的同一路径下执行将文件加载到Elasticsearch集群中。
在我机器执行示例:
~/Documents/es ⌚ 15:20:22
$ curl -H "Content-Type: application/json" -XPOST "localhost:9200/bank/_doc/_bulk?pretty&refresh" --data-binary "@accounts.json"
命令是:我这里的localhost是说明这个ES服务跑在我本机。
curl -H "Content-Type: application/json" -XPOST "localhost:9200/bank/_doc/_bulk?pretty&refresh" --data-binary "@accounts.json"
命令执行正确的响应结果:
当然我这里只截取了两条,省略了,具体的会根据你的文件量生成响应。
{
"took":279,
"errors":false,
"items":[
{
"index":{
"_index":"bank",
"_type":"_doc",
"_id":"1",
"_version":1,
"result":"created",
"forced_refresh":true,
"_shards":{
"total":2,
"successful":1,
"failed":0
},
"_seq_no":0,
"_primary_term":1,
"status":201
}
},
{
"index":{
"_index":"bank",
"_type":"_doc",
"_id":"1",
"_version":1,
"result":"created",
"forced_refresh":true,
"_shards":{
"total":2,
"successful":1,
"failed":0
},
"_seq_no":0,
"_primary_term":1,
"status":201
}
}
]
}
三、查看导入是否成功
数据导入了,现在要查看是否导入成功。
执行一条查看所有索引情况的命令:
curl "localhost:9200/_cat/indices?v"
得出的正确响应:
意味着我们已经将1000条数据,导入到了索引为bank下,并且在_doc类型下。
~/Documents/es ⌚ 15:20:22
$ curl "localhost:9200/_cat/indices?v"
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
yellow open customer LtbHvkQ3R4GS_41Fi_Y_eg 5 1 6 0 20.8kb 20.8kb
yellow open bank XIDwelSnQZec6V_4bHIzlg 5 1 1000 0 475.1kb 475.1kb
green open .kibana WZ_XKyA3RfaGIXiW3D4z-Q 1 0 1 0 3.7kb 3.7kb
yellow open user NnPXumxMRSGc-X7BXkDV9A 5 1 1 0 4.4kb 4.4kb
~/Documents/es ⌚ 15:30:09
$
5、怎么搜索
搜索的时候,并不是说你去搜索字段。
比如说我bank索引下,目前有1000条数据。
我导入的数据:
我现在要搜索:
firstname字段对应的值为Nanette。
直接输入Nanette就可以搜到结果了。
6、过滤搜索
例如搜索balance在0-20000区间的数据。
那么结果就搜索出来啦!