Я пытаюсь подключиться к поиску elasti c, используя это:
app.config['ELASTICSEARCH_URL'] = 'https://localhost:9200/'
Но отображается эта ошибка, которая означает, что поиск elasti c не подключен.
asticsearch .exceptions.ConnectionError: ConnectionError (: Не удалось установить sh новое соединение: [Errno 111] Соединение отклонено), вызванное: NewConnectionError (: Не удалось установить sh новое соединение: [Errno 111] Соединение отклонено)
Я искал в stackoverflow, они говорят, что проблема с сертификатом, и установили для ssl значение true. Я просто хочу знать, как я могу подключить поиск elasti c к python с использованием упомянутого синтаксиса.
Я сделал простой клон кору. Все работает. Позже я решил добавить elasti c поиск в нем. Сначала я подключился.
def add_to_index(index, model):
if not current_app.elasticsearch:
return
payload = {}
for field in model.__searchable__:
payload[field] = getattr(model, field)
current_app.elasticsearch.index(index=index, doc_type=index, id=model.id,
body=payload) # shows error here.
. При добавлении нового вопроса от пользователя я использовал его для сохранения в базе данных, но теперь я также добавляю его в поиск elasti c вместе с databse.
при отображении ошибки отладки:
quora/models.py", line 34, in after_commit
add_to_index(obj.__tablename__, obj)
quora/search.py", line 11, in add_to_index # this function i have written above.
body=payload)**
Моя модель
class Answer(db.Model):
id = db.Column(db.Integer, primary_key=True)
body = db.Column(db.Text())
timestamp = db.Column(db.DateTime, index=True, default=datetime.utcnow)
user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable='False')
question_id = db.Column(db.Integer, db.ForeignKey('question.id'), nullable='False')
def __repr__(self):
return f"('{self.id}', '{self.body}', '{self.timestamp}')"
class Question(SearchableMixin, db.Model):
id = db.Column(db.Integer, primary_key=True)
body = db.Column(db.Text())
timestamp = db.Column(db.DateTime, index=True, default=datetime.utcnow)
user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable='False')
__searchable__ = ['body']
def __repr__(self):
return f"('{self.id}', '{self.body}', '{self.timestamp}')"