Обратная совместимость и составная агрегация «недостающее ведро» - PullRequest
0 голосов
/ 24 апреля 2019

У меня есть кластер ElasticSearch, который в настоящее время работает на версии 6.3.2, и мы еще не готовы его обновить (надеюсь, это произойдет в ближайшее время!).Согласно документации ES, я должен иметь возможность использовать клиенты Java из более новых версий, если у меня одна и та же основная версия:

Клиент должен иметь ту же основную версию (например, 2.х или 5.х) в качестве узлов в кластере.Клиенты могут подключаться к кластерам, которые имеют другую минорную версию (например, 2.3.x), но возможно, что новые функции могут не поддерживаться.В идеале клиент должен иметь ту же версию, что и кластер.

По ряду причин мой код клиента в настоящее время использует версию 6.6.2 высокоуровневого клиента REST.Поскольку и клиент, и кластер используют основную версию 6.x, я ожидаю, что все будет работать, пока мой клиент не пытается использовать какие-либо функции, более новые, чем 6.3.2.Если я неверно истолковываю приведенное выше заявление о совместимости версий, пожалуйста, дайте мне знать.К сожалению, я не считаю эти версии совместимыми, когда я представляю использование составного агрегирования.Код клиента вставляет запись "missing_bucket": false в составные источники агрегации.Я считаю, что отсутствующая функция корзины была добавлена ​​только в Elasticsearch 6.4, и мой кластер 6.3.2 отклоняет ее с ошибкой:

org.elasticsearch.ElasticsearchException: Elasticsearch exception [type=illegal_argument_exception, reason=[date_histogram] unknown field [missing_bucket], parser not found]

Является ли это нарушением вышеупомянутой политики совместимости клиента?Какие варианты лучше всего обойти?Нужно ли мне возвращать весь мой клиентский код для использования 6.3, пока я не смогу запланировать полное обновление кластера?Есть ли другие способы обхода, которые я могу рассмотреть в это время?

...