前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ElasticSearch实战:将文本文件导入kibana

ElasticSearch实战:将文本文件导入kibana

原创
作者头像
BH8ANK
发布2019-03-13 13:25:47
5.1K0
发布2019-03-13 13:25:47
举报
文章被收录于专栏:云技术分享云技术分享

原创声明:本文首发腾讯云·云+社区,未经允许,不得转载

前文写过,如何将linux日志导入到kibana----《ElasticSearch实战:Linux日志对接Kibana》,本文主要解决另一个问题:如何将非格式化的文本文件(如TXT等)导入到kibana中。


下面,我们以《中华人民共和国刑法.txt》为例,详细介绍如何进行处理。

《刑法》文本部分截图
《刑法》文本部分截图

一,分析导入格式和导入方法

1,文本格式分析

根据官方文档 https://www.elastic.co/guide/en/kibana/current/tutorial-load-dataset.html 的介绍,提供了几组已经格式化的数据,下面以shakespeare.json来详细分析。

ElasticSearch官网提供的已经格式化的数据
ElasticSearch官网提供的已经格式化的数据

据上图,我们可以看到,格式化的json数据主要分两部分,一部分负责描述索引,如 :

代码语言:json
复制
   {"index":{"_index":"shakespeare","_id":0}}

另一部分,用来描述文档内容:

代码语言:json
复制
   {"type":"act","line_id":1,"play_name":"Henry IV", "speech_number":"","line_number":"","speaker":"","text_entry":"ACT I"}

因此,我们也需要将《刑法》文本处理为该格式。

2,导入前的准备

根据官方文档介绍,导入数据前,我们首先需要在Kibana上为该索引创建映射mapping,可以简单地理解为,为一个表格编写好表头。然后,再使用PUT语句将数据导入。

二,实际操作

1,文本处理

这里我们采用python3进行文本处理,处理的原则是,以换行符为界,每一行,做为一个独立的文档(doc)。最终输出json文件。

代码语言:python
代码运行次数:0
复制
#python 3.6
#!/usr/bin/env python
# -*- coding:utf-8 -*-
__author__ = 'BH8ANK'
'''
最终将输出格式改为
{"indeeach_row":{"_index":"xingfa","_id":1}}
{"text_entry":"犯罪的行为或者结果有一项发生在中华人民共和国领域内的,就认为是在中华人民共和国领域内犯罪。"}

'''


'''读取文件
'''
a = open(r"D:\xingfa.txt", "r",encoding='utf-8')
out = a.read()
#print(out)
read_result = out.split('\n')
#print(read_result)

lenth = len(read_result)
print(lenth)

number = 1
ju_1 = '{"index":{"_index":"xingfa","_id":'
ju_2 = '{"text_entry":"'

# print(ju_1)
for each_row in read_result:
    #第奇数行,输出对索引的描述
    res_1 = ju_1 + str(number) + '}}'+'\n'
    print(res_1)
    a = open(r"D:\out.json", "a", encoding='UTF-8')
    a.write(res_1)

    #第偶数行,输出文档(doc)的内容
    res_2 = ju_2 + each_row + '"}'+'\n'
    print(res_2)
    a = open(r"D:\out.json", "a", encoding='UTF-8')
    a.write(res_2)

    a.close()
    number+=1

print("文件格式化完成!")

上述代码执行后,输出的格式化文件内容如下图:

json格式化后的《刑法》文本
json格式化后的《刑法》文本

2,数据导入

(1)在Kibana上建立映射

代码语言:javascript
复制
PUT /xingfa
{
 "mappings": {
  "doc": {
   "properties": {
    "text_entry": {"type": "keyword"}
   }
  }
 }
}

(2)使用curl命令导入数据

代码语言:shell
复制
[root@VM_0_7_centos elasticsearch]# curl -H 'Content-Type: application/x-ndjson' -XPOST '10.0.0.24:9200/xingfa/doc/_bulk?pretty' --data-binary @out.json
{
  "took" : 300,
  "errors" : false,
  "items" : [
    {
      "index" : {
        "_index" : "xingfa",
        "_type" : "doc",
        "_id" : "1",
        "_version" : 1,
        "result" : "created",
        "_shards" : {
          "total" : 2,
          "successful" : 2,
          "failed" : 0
        },
        "created" : true,
        "status" : 201
      }
    },

…………
(略)
…………

3,索引检查

登录kibana管理页,确认上面的数据是否已成功导入。

代码语言:javascript
复制
GET /_cat/indices?v
kibana开发工具中查看所有索引
kibana开发工具中查看所有索引

查看索引内容

代码语言:javascript
复制
GET /xingfa/_search/
{
  "query": {
    "match_all": {}
  },
  "size": "9999"
}
kibana中查询index:xingfa 返回的内容
kibana中查询index:xingfa 返回的内容

至此,我们已将《刑法》文本,导入到kibana中了。

三、应用

这里简单讲一下,如何使用Kibana进行数据检索。例如,我们需要查询《刑法》中,有关“走私”和“拐卖”的相关条款。

(1)在kibana首页,打开Discover,在页面中,新增索引类型,类型名与上面导入数据的index名保持一致,即“xingfa”,然后点击"Creat",等待几秒到几分钟,如下图

添加索引类型
添加索引类型

(2)索引类型添加完成后,会自动跳转到配置页,此时,我们重新打开Discover,即可进行关键字检索,如下图:

(点击图片可看高清大图)

使用kibana进行关键字检索
使用kibana进行关键字检索

至此,我们已将普通文本导入到kibana中,并可以通过kibana进行关键字检索了。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一,分析导入格式和导入方法
    • 1,文本格式分析
    • 二,实际操作
    • 1,文本处理
      • 2,数据导入
        • (1)在Kibana上建立映射
        • (2)使用curl命令导入数据
      • 3,索引检查
      • 三、应用
      相关产品与服务
      Elasticsearch Service
      腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档