Автоматизируйте создание индекса Elasticsearch при запуске приложения django - PullRequest
0 голосов
/ 12 октября 2019

Я хочу автоматически проверить и создать (если не существует) индекс эластичного поиска моего приложения при запуске, это моя текущая ситуация, которая не работает:

echo "Checking if Elasticsearch index is setup"
{
cat <<EOF | python /manage.py shell
from elasticsearch import Elasticsearch
HOST_URLS = ["elasticsearch:9200"]
es_conn = Elasticsearch(HOST_URLS)
INDEX_NAME = "posts"
res = es_conn.indices.exists(index=INDEX_NAME)

if res == True:
  print("Elasicsearch index seems already setup, skipping")
else:
  print("Elasicsearch index not setup yet, creating ...")
  import subprocess
  subprocess.Popen("y | python manage.py search_index --rebuild", shell=True, stdout=subprocess.PIPE).communicate()[
                0].decode('utf-8').strip()
EOF
}>/dev/null

, что снова приводит к:

"индексы '{}'? [N / Y]:" .format ("," .join (index_names)))
|EOFError: EOF при чтении строки

python manage.py search_index --rebuild from: https://github.com/sabricot/django-elasticsearch-dsl/

1 Ответ

0 голосов
/ 04 ноября 2019

У меня была та же проблема с запуском этой команды, и я понял, когда я пытался запустить ее вручную, она запрашивала

Are you sure you want to delete the 'clubs' indexes? [n/Y]:

Это означало, что когда она запускалась автоматически, она не получалаответ, который разбил все. Вам нужно добавить флаг -f в конец вашей команды, который просто обойдёт его после запроса этого приглашения. Например: python manage.py search_index --rebuild -f

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...