无法将JSON发布到ElasticSearch没有找到uri[\]和方法[post]的处理程序

2024-09-27 19:26:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试将一些数据(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}$

我试着去看一篇关于同一问题的博文,但对我毫无作用。 知道为什么没用吗?在


Tags: 数据importclientjsondbdatadatetimemongo
1条回答
网友
1楼 · 发布于 2024-09-27 19:26:02

有两个问题

  1. url_base缺少索引和类型

    url_base='http://127.0.0.1:9200/index/type'

  2. headers必须是application/json(您还没有看到这一点,但是一旦您解决了上面的问题,您也会得到这个错误。在

    headers={“content-type”:“application/json”}

相关问题 更多 >

    热门问题