Как удалить неиспользуемые индексы в Google Application Engine? - PullRequest
60 голосов
/ 02 мая 2009

Я случайно добавил новый фильтр в мое приложение GAE. Индекс в данный момент «обслуживает», но мне этот индекс вообще не нужен, и я бы хотел его удалить. Как я могу это сделать?

Ответы [ 9 ]

95 голосов
/ 02 мая 2009

Это задокументировано здесь . Надеюсь, это поможет.

Удаление неиспользуемых индексов

Когда вы изменяете или удаляете индекс из index.yaml исходный индекс не удаляется из App Engine автоматически. Это дает вам возможность оставить старую версию приложения, запущенного в то время как новые индексы строятся, или вернуться к старая версия сразу, если проблема обнаружен с более новой версией.

Когда вы уверены, что старые индексы больше не нужно, вы можете удалить их из App Engine, используя следующее Команда:

appcfg.py vacuum_indexes myapp/

Эта команда удаляет все индексы для приложения, которые не упомянуты в локальной версии index.yaml.

26 голосов
/ 27 июля 2011

Для GAE / Java документация включает эту информацию :

Удаление неиспользуемых индексов

...

Когда вы уверены, что старые индексы больше не нужны, вы можете удалите их из App Engine с помощью действия vac_indexes:

./appengine-java-sdk/bin/appcfg.sh vacuum_indexes myapp/war

Эта команда удаляет все индексы для приложения, которые не упомянуты в локальные версии datastore-indexes.xml и Генерация / датастор-индексы-auto.xml.

5 голосов
/ 08 октября 2013

В Windows Google AppEngine Java , мы должны использовать команду appcfg.cmd для удаления неиспользуемых индексов развернутого приложения.

Синтаксис:

appengine-java-sdk-path \ bin \ appcfg.cmd вакуумные_индексы project-root-path \ poject-name \ war \

4 голосов
/ 01 февраля 2019

По состоянию на февраль 2019 года теперь:

gcloud datastore indexes cleanup index.yaml
4 голосов
/ 16 декабря 2010

Для gae-java, как упоминал JochenJung, инструмент «вакуумные_индексы» будет работать, но вам придется эмулировать проект на python следующим образом:

Обратите внимание, что вакуумный инструмент работает только тогда, когда указывает на * .appspot.com, а не на локального разработчика. окружающая среда.

  • создайте app.yaml для вашего приложения и поместите его в ваш / myapp / корневой каталог, как минимум:

    application: myproj
    version: 4
    runtime: python
    api_version: 1

где «версия» - это версия вашего приложения, «myproj» - GAE-имя вашего проекта.

  • создайте index.yaml и поместите его в тот же корневой каталог. Вместо того, чтобы кропотливо вносить в этот файл информацию об индексах для индексов, которые вы хотите сохранить, оказывается, что инструмент даст вам подтверждение да / нет для каждого и каждого индекса, который он удаляет, поэтому проще просто указать, что ВСЕ индексы должны быть отброшены, и используйте подтверждение, чтобы сохранить те, которые вы хотите сохранить.

indexes:

# AUTOGENERATED

Затем выполните команду, как показано выше,


  /appcfg.py vacuum_indexes /path/to/myproj/
3 голосов
/ 06 августа 2015

Если вы используете maven mvn appengine:vacuum_indexes. Нет необходимости mvn appengine:update, команда обновляет удаленный сервер.

Полный список команд maven здесь .

2 голосов
/ 12 июля 2015

В Windows, использующей Java, эта команда работала для меня:

appcfg.cmd vacuum_indexes C:\Users\Name\AndroidStudioProjects\Project\backend\src\main\webapp\

Примечание: Убедитесь, что в папке webapp есть datastore-indexes.xml (эти индексы будут сохранены).

1 голос
/ 19 марта 2018

С текущей версией gcloud вы можете просто сделать:

gcloud datastore cleanup-indexes index.yaml

, что более интуитивно понятно, чем вызов appcfg.cmd [...].

0 голосов
/ 06 июня 2019

gcloud datastore cleanup-indexes /path/to/file/index.yaml

эта команда больше не работает .

gcloud datastore indexes cleanup /path/to/index.yaml

это новая команда .

вы должны запустить их в google cloud console. обычно вы можете загрузить файл index.yaml, используя функцию file upload в google cloud console. ваш файл отправляется прямо на _admin, вы можете cd туда и позвонить,

gcloud datastore indexes cleanup index.yaml

Совет

если вы используете datastore в проекте Java , у вас есть datastore-indexes.xml вместо index.yaml. У вас могут возникнуть проблемы с поиском файла index.yaml, если вы не знаете, где искать.

Вы можете просто найти путь к файлу index.yaml, посмотрев на deploy console в вашей IDE.

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