Использование redis в groovy скрипте


(Alexander) #1

Приветствую. Хотел узнать - существует ли возможность подключения пользовательских библиотек к groovy скрипту?

Нашел в сети такой вот пример, но он не подтягивается тем groovy который идет в пакете elasticsearch.
Райзит unable to resolve class Jedis

@Grapes([
  @Grab('redis.clients:jedis:2.0.0'),
  @GrabConfig(systemClassLoader=true)
])
import redis.clients.jedis.*;
Jedis redis = new Jedis("localhost");

Буду благодарен любой помощи по теме. Спасибо.

UPD.

Либо иные способы, которые позволяют делать импорт классов, которые не входят в состав elastichsearch.groovy пакета.


(Igor Motov) #2

Я думаю, вам надо переключиться с groovy на native script. Даже если вам удасться подключить библиотеку (что не тривиально в последних версиях elasticsearch), с groovy вы очень быстро столкнетесь c другими проблемами - например, как избежать нового соединения с redis-ом для каждой записи и т.д.


(Alexander) #3

Спасибо за ответ. Если вы располагаете иноформацией: на сколько сложна, в последних версиях, процедура подключения сторонней библиотеки в native script?(не сильно силен в Java, от этого и выбор пал на groovy изначально). Возможно у вас есть какие-то рабочие примеры таких интеграций. Просто исходя из моих наблюдений - это все не так просто как казалось изначально и информации в сети о таких интеграциях тоже не сильно много. в основном различные вариации того примера, который предоставлен на официальном сайте(стандартный пакет, скажем так)


(Igor Motov) #4

С native script - все просто. Сторонняя библиотека там просто часть плагина. Примеры есть, но они зависят от того с какой версии elasticsearch ваш скрипт разрабатываете. О какой версии мы говорим?

Процедура подключения сторонней библиотеки в elasticsearch без плагина описана тут - https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-scripting-security.html#_fix_the_security_problem Но это временное решение, и я бы не стал его использовать для новых проектов.


(system) #5