我尝试将一些数据(JSON格式)从mongoDB发布到elasticSearch。在
这是我的代码:
首先我从mongoDB中提取数据,然后尝试将每个“document”发布到我的elastic上,地址是“http://127.0.0.1:9200”。我添加了一个额外的函数“myconverter(o)”,使datetime对象可序列化。在
from pymongo import MongoClient
import requests
import json
import datetime
mongo_host = 'localhost'
mongo_port = '27017'
client=MongoClient(mongo_host+':'+mongo_port)
db = client.cvedb
collection=db['cves']
def myconverter(o):
if isinstance(o, datetime.datetime):
return o.__str__()
try: db.command("serverStatus")
except Exception as e: print(e)
else: print("You are connected!")
cursor = collection.find({})
for document in cursor:
headers={"content-type":"application/x-www-form-urlencoded"}
url_base = 'http://127.0.0.1:9200'
data=document
data_parsed=(json.dumps(data, default = myconverter))
print("#####")
print("#####")
print(data_parsed)
print("#####")
print("#####")
req = requests.post(url_base,json=data_parsed)
print (req.status_code)
print (req.text)
print("####")
print("#####")
print (req.status_code)
print("#####")
print("####")
client.close()
但是,当我在下面的地址“a2}”时,什么也没有出现。以下是我使用终端得到的信息:
^{pr2}$我试着去看一篇关于同一问题的博文,但对我毫无作用。 知道为什么没用吗?在
有两个问题
url_base
缺少索引和类型url_base='http://127.0.0.1:9200/index/type'
headers
必须是application/json
(您还没有看到这一点,但是一旦您解决了上面的问题,您也会得到这个错误。在headers={“content-type”:“application/json”}
相关问题 更多 >
编程相关推荐