使用python将json文件上传到弹性搜索

时间:2017-06-08 07:51:54

标签: python json elasticsearch

我尝试将带有2个文档的JSON文件上传到ES。 我收到以下错误

ValueError: Invalid control character at: line 1 column 24 (char 23)    

我正在使用这个python代码:

import json
import os, sys

from elasticsearch import Elasticsearch

ES_CLUSTER = 'http://localhost:9200/' # Need PW and User name
ES_INDEX = 'test'
ES_TYPE = 'doc'

es = Elasticsearch(
    ['localhost'],
    http_auth=('elastic', 'changeme'),
    port=9200
)
es = Elasticsearch(ES_CLUSTER)
with open("C:\Users\office\Desktop\Elasticsearch data\E-commerce.json") as json_file:
    json_docs = json.load(json_file)
es.bulk(ES_INDEX, ES_TYPE, json_docs)

3 个答案:

答案 0 :(得分:0)

尝试使用json.loads代替可能有效的json.load

答案 1 :(得分:0)

也许您可以向我们展示您要上传的json文件?因为没有它,问题没有意义。

P.S。对不起,这是“问题的答案”,但不是评论。我不能写评论,因为我没有足够的声望点。

答案 2 :(得分:0)

问题解决了,这是我使用的代码

import json
from pprint import pprint
from elasticsearch import Elasticsearch
es = Elasticsearch(
    ['localhost'],
    http_auth=('elastic', 'changeme'),
    port=9200

)

MyFile= file("C:\Users\office\Desktop\Elasticsearch data\E-commerce2.json",'r').read()
ClearData = MyFile.splitlines(True)
i=0
json_str=""
docs ={}
for line in ClearData:
    line = ''.join(line.split())
    if line != "},":
        json_str = json_str+line
    else:
        docs[i]=json_str+"}"
        json_str=""
        print docs[i]
        es.index(index='test', doc_type='Blog', id=i, body=docs[i])
        i=i+1