Не удалось отправить сообщение на сервер solr с помощью python и запросов

Это код, который я пытаюсь реализовать: -

import requests
import tornado.ioloop
import tornado.web
import tornado.autoreload
import json
class MainHandler(tornado.web.RequestHandler):
 def get(self):
 payload = [{"id" : "978-0641723445", "cat" : ["book","hardcover"], "name" : "The Lightning Thief", "author" : "Rick Riordan","series_t" : "Percy Jackson Olympians", "sequence_i" : 1, "genre_s" : "fantasy", "inStock" : True, "price" : 12.50, "pages_i" : 384}]
 url = 'http://localhost:8983/solr/update/json'
 headers = {'content-type' : 'application/json'}
 # files = {'file': ('books.json', open('books.json', 'rb'))}
 timeline = requests.post(url, data = json.dumps(payload), headers = headers)
 self.write(timeline.text)
class QueryHandler(tornado.web.RequestHandler):
 def get(self):
 # timeline = requests.get('http://localhost:8983/solr/collection1/select?q=a&wt=json&indent=true')
 payload = {'q' : 'a', 'wt' : 'json', 'indent' : True}
 timeline = requests.get('http://localhost:8983/solr/collection1/select', params = payload)
 self.write(timeline.json())
application = tornado.web.Application([
 (r"/", MainHandler),
 (r"/query", QueryHandler)
])
if __name__ == "__main__":
 application.listen(8888)
 io_loop = tornado.ioloop.IOLoop.instance()
 tornado.autoreload.start(io_loop)
 io_loop.start()

Я могу запросить сервер solr на localhost: 8888/query но на localhost: 8888, где я пытаюсь опубликовать данные, я получаю этот ответ от solr: -

{
responseHeader: {
status: 0,
QTime: 46
}
}

Данные не отправляются на сервер solr.

Любые предложения

1 ответ

Код не содержит commitWithin info в заголовке. Параметр находится в миллисекундах. Его только после фиксации данных доступны для поиска из Solr. Следующее может служить примером для данных POST для solr. Добавьте заголовок JSON вместе с временем commitWithin и данными как строку JSON в параметр data param

requests.post("http://localhost:8983/solr/collection1/update?wt=json", headers={"Content-Type":"application/json"}, data='{"add":{ "doc":{"id" : 14, "log_type" : "debug", "log_text" : "A transaction of debug from Kimy"},"boost":1.0,"overwrite":true, "commitWithin": 1000}}')

Ответ:

{"responseHeader":{"status":0,"QTime":128}}

licensed under cc by-sa 3.0 with attribution.