Невозможно опубликовать JSON в ElasticSearch - не найден обработчик для uri [\] и метода [POST] - PullRequest
0 голосов
/ 19 декабря 2018

Я пытаюсь опубликовать некоторые данные в формате JSON из mongoDB вasticSearch.

Вот мой код:

Сначала я извлекаю данные из mongoDB, затем я пытаюсь опубликовать каждый«document» к моему эластичному номеру, адрес которого «http://127.0.0.1:9200".». Я добавил дополнительную функцию «мой конвертер (o)», чтобы сделать объект даты и времени сериализуемым.

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()

Но когда я hcekc мойES, по следующему адресу: «http://127.0.0.1:9200/_cat/indices", ничего не появляется.Вот что я получаю со своим терминалом:

{"Modified": "2008-09-09 08:35:18.883000", "impact": {"confidentiality": "PARTIAL", "integrity": "PARTIAL", "availability": "PARTIAL"}, "summary": "KDE K-Mail allows local users to gain privileges via a symlink attack in temporary user directories.", "cvss": 4.6, "access": {"vector": "LOCAL", "authentication": "NONE", "complexity": "LOW"}, "vulnerable_configuration": ["cpe:2.3:a:kde:k-mail:1.1"], "_id": null, "references": ["http://www.redhat.com/support/errata/RHSA1999015_01.html", "http://www.securityfocus.com/bid/300"], "Published": "2000-01-04 00:00:00", "id": "CVE-1999-0735", "cvss-time": "2004-01-01 00:00:00", "vulnerable_configuration_cpe_2_2": ["cpe:/a:kde:k-mail:1.1"]}
#####
#####
400
No handler found for uri [/] and method [POST]
####
#####
400
#####
####
#####
#####

Я пытался следить за тем сообщением, которое посвящено той же проблеме, но ничего не помогало мне.Есть идеи, почему это не сработало?

1 Ответ

0 голосов
/ 19 декабря 2018

Есть две проблемы

  1. url_base отсутствует индекс и введите

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

  2. headers должно быть application/json (пока вы этого не видите, но как только вы решите вышеуказанный вопрос, вы также получите эту ошибку.

    headers = {"content-type": "application/ JSON "}

...