zoukankan      html  css  js  c++  java
  • 【BIGDATA】将普通文本文件导入ElasticSearch

     

     

    以《刑法》文本.txt为例。

     

     一、格式化数据

    1,首先,ElasticSearch只能接收格式化的数据,所以,我们需要将文本文件转换为格式化的数据---json。

     下图为未处理的文本文件。

     

     

    2,这里,使用python文件操作,将文本格式化为ElasticSearch可识别的json格式。

    #python 3.6
    #!/usr/bin/env python
    
    # -*- coding:utf-8 -*-
    __author__ = 'BH8ANK'
    '''
    最终将输出格式改为
    {"index":{"_index":"xingfa","_id":1}}
    {"text_entry":"犯罪的行为或者结果有一项发生在中华人民共和国领域内的,就认为是在中华人民共和国领域内犯罪。"}
    
    '''
    
    
    '''读取文件
    '''
    a = open(r"D:xingfa.txt", "r",encoding='utf-8')
    out = a.read()
    #print(out)
    TypeList = out.split('
    ')
    #print(TypeList)
    
    lenth = len(TypeList)
    print(lenth)
    
    number = 1
    ju_1 = '{"index":{"_index":"xingfa","_id":'
    ju_2 = '{"text_entry":"'
    
    # print(ju_1)
    for x in TypeList:
    
        res_1 = ju_1 + str(number) + '}}'+'
    '
        print(res_1)
        a = open(r"D:out.json", "a", encoding='UTF-8')
        a.write(res_1)
    
    
        res_2 = ju_2 + x + '"}'+'
    '
        print(res_2)
        a = open(r"D:out.json", "a", encoding='UTF-8')
        a.write(res_2)
    
    
        a.close()
        number+=1

    3,执行后,输出的json内容为:

     

     二、将数据导入ElasticSearch

    1,我们要为即将导入的数据,建立映射。此操作可以在kibana或命令行完成。

    PUT /xingfa
    {
     "mappings": {
      "doc": {
           "properties": {
              "text_entry":{"type":"keyword"}
           }  
      }
     }
    }

    2,登录虚拟机,将之前生成的out.json文件,导入到对应ElasticSearch集群中。

    我们的ES组网情况如上图。

     

    操作如下:

     命令如下:

    curl -H 'Content-Type: application/x-ndjson' -XPOST '10.0.0.19:9200/xingfa/doc/_bulk?pretty' --data-binary @out.json

    等待命令执行完成后,即可登录kibana去查询对应的数据了。

    使用查询语句:

    GET /xingfa/_search/
    {
      "query": { "match_all": {} },
      "size":"9999"                         //此处设置为9999,主要原因是,不加参数的话,默认搜索结果仅显示部分,一般是5.
    }

    也可以直接在虚拟机命令行里,查询这个索引,确认数据是否已经完成上传。

    使用查询语句:

    curl -XGET "http://10.0.0.19:9200/xingfa/_search/" -H 'Content-Type: application/json' -d'
    {
      "query": {
        "match_all": {}
      },
      "size": "9999"
    }'

    至此,完成数据导入。

  • 相关阅读:
    Android:JNI与NDK(一)
    okio:定义简短高效
    hashCode()方法以及集合中Set的一些总结
    Gradle入门到实战(二) — ImageOptimization安卓图片转换压缩插件
    Gradle入门到实战(一) — 全面了解Gradle
    数据结构与算法(十二):八大经典排序算法再回顾
    数据结构与算法(十一):图的基础以及遍历代码实现
    数据结构与算法(十):红黑树与TreeMap详细解析
    数据结构与算法(九):AVL树详细讲解
    Android版数据结构与算法(八):二叉排序树
  • 原文地址:https://www.cnblogs.com/BH8ANK/p/10496756.html
Copyright © 2011-2022 走看看