ElasticSearch, использование Wildcard для имен индексов при использовании массового API

Я использую плагин RabbitMQ River для Elasticsearch для вставки / удаления данных в наши индексы ElasticSearch. Плагин River поддерживает только Bulk API. Наши текущие данные используют несколько индексов, индекс по дате, что-то вроде "indexName_yyyymmdd"

При удалении данного идентификатора мы не знаем, по какому индексу этот идентификатор мог быть найден. Мы думали, что сможем использовать подстановочный формат, такой как "indexName *", так же, как вы можете использовать при поиске.

Мы пробовали разные комбинации, но похоже, что либо мы не используем правильный синтаксис, либо подстановочные знаки точно не поддерживаются???

Examples we have tried:
// using default index in the url …
POST /mybestfares_gb*/bestfares_data/_bulk
{ "delete": {"_id": " AUry2F0Mu2oVvm5kYHaK " }}

// index in the meta section … 
POST /_bulk
{ "delete": {"_index":"mybestfares_gb*", "_type":"bestfares_data","_id": "AUry2F0Mu2oVvm5kYHaP" }}

В обоих случаях мы получаем следующую ошибку: "error": "InvalidIndexNameException[[mybestfares_gb*] Invalid index name [mybestfares_gb*], must not contain the following characters [\\, /, *, ?, \", <, >, |, , ,]]"

В документации ElasticSeach упоминается: "API с одним индексом, такие как API документа и API с псевдонимом с одним индексом, не поддерживают несколько индексов".

А Bulk API классифицируется как Multi-Document API, так что я прыгаю, просто я не использую правильный синтаксис?

1 ответ

Решение

К сожалению, это не сработает. Если вы внимательно прочитали документацию:

API с одним индексом, такие как API документа и API с псевдонимом с одним индексом, не поддерживают несколько индексов.

и затем перейдите по ссылкам на список Document API:

API документов

В этом разделе описываются следующие API-интерфейсы CRUD:

API одного документа

  • Индекс API
  • Получить API
  • Удалить API
  • Обновить API

Многодокументные API

  • Multi Get API
  • Массовое API
  • Bulk UDP API
  • API Удалить по запросу

вы увидите, что Bulk API и API Delete и Delete By Query классифицируются как Document API, которые не могут использовать подстановочный знак для покрытия нескольких индексов:

Все CRUD API являются одноиндексными API. Параметр index принимает одно имя индекса или псевдоним, который указывает на один индекс.

http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/docs.html

Другие вопросы по тегам