Невозможно загрузить собственную библиотеку поддержки JNA Elasticsearch 6.x
Я установил Elasticsearch 6.x в моем Debian 7 (wheezy)
, Я пытался начать с service elasticsearch start
но это дает мне сообщение об ошибке
root@debian:~# sudo -i service elasticsearch start
[FAIL] Starting Elasticsearch Server: failed!
Я попытался посмотреть на файлы журнала asticsearch на nano /var/log/elasticsearch/elasticsearch.log
и я получил эту ошибку
[2017-12-14T11:25:39,153][WARN ][o.e.b.Natives ] unable to load JNA native support library, native methods will be disabled.
java.lang.UnsatisfiedLinkError: Native library (com/sun/jna/linux-x86/libjnidispatch.so) not found in resource path ([file:/usr/share/elasticsearch/lib/lucene-spatial-$
at com.sun.jna.Native.loadNativeDispatchLibraryFromClasspath(Native.java:962) ~[jna-4.4.0-1.jar:4.4.0 (b0)]
at com.sun.jna.Native.loadNativeDispatchLibrary(Native.java:922) ~[jna-4.4.0-1.jar:4.4.0 (b0)]
at com.sun.jna.Native.<clinit>(Native.java:190) ~[jna-4.4.0-1.jar:4.4.0 (b0)]
at java.lang.Class.forName0(Native Method) ~[?:1.8.0_151]
at java.lang.Class.forName(Class.java:264) ~[?:1.8.0_151]
at org.elasticsearch.bootstrap.Natives.<clinit>(Natives.java:45) [elasticsearch-6.1.0.jar:6.1.0]
at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:103) [elasticsearch-6.1.0.jar:6.1.0]
at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:171) [elasticsearch-6.1.0.jar:6.1.0]
at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:322) [elasticsearch-6.1.0.jar:6.1.0]
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:121) [elasticsearch-6.1.0.jar:6.1.0]
at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:112) [elasticsearch-6.1.0.jar:6.1.0]
at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) [elasticsearch-6.1.0.jar:6.1.0]
at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124) [elasticsearch-cli-6.1.0.jar:6.1.0]
at org.elasticsearch.cli.Command.main(Command.java:90) [elasticsearch-cli-6.1.0.jar:6.1.0]
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:92) [elasticsearch-6.1.0.jar:6.1.0]
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:85) [elasticsearch-6.1.0.jar:6.1.0]
[2017-12-14T11:25:39,212][WARN ][o.e.b.Natives ] cannot check if running as root because JNA is not available
[2017-12-14T11:25:39,212][WARN ][o.e.b.Natives ] cannot install system call filter because JNA is not available
[2017-12-14T11:25:39,215][WARN ][o.e.b.Natives ] cannot register console handler because JNA is not available
[2017-12-14T11:25:39,256][WARN ][o.e.b.Natives ] cannot getrlimit RLIMIT_NPROC because JNA is not available
[2017-12-14T11:25:39,256][WARN ][o.e.b.Natives ] cannot getrlimit RLIMIT_AS beacuse JNA is not available
[2017-12-14T11:25:39,256][WARN ][o.e.b.Natives ] cannot getrlimit RLIMIT_FSIZE because JNA is not available
Как я могу это исправить? Я установил Java, и это version javac 1.8.0_151
что может пойти не так с моим кодом? `
4 ответа
Хорошо, я нашел решение. Очевидно, что объем памяти виртуальной машины (ОЗУ) был 1 ГБ - 2 ГБ, поэтому я увеличил объем ОЗУ своей виртуальной машины как минимум до 4 ГБ и перезагрузил машину. И упругий поиск начал работать просто отлично.
- Перейдите в /etc/sysconfig/asticsearch
- Добавить ES_JAVA_OPTS="-Djna.tmpdir=/var/lib/asticsearch/tmp"
- начать эластичный поиск.
- Теперь вы можете видеть папку tmp, созданную в / var / lib /asticsearch/.
- Эта папка должна иметь разрешение на выполнение для пользователя "asticsearch"
- проверьте разрешение с помощью namei -l /var/lib/asticsearch
- корневой корень dr-xr-xr-x / корневой корень drwxr-xr-x var корневой корень drwxr-xr-x lib drwxr-x--- эластичный поиск
Я надеюсь, что ваша проблема будет решена.
У меня была такая же проблема на сервере CentOS7 cPanel с ElasticSearch 7.8, установленным через YUM. В соответствии с ответом я сделал следующее:
- Задавать
ES_JAVA_OPTS="-Djna.tmpdir=/var/lib/elasticsearch/tmp"
в/etc/sysconfig/elasticsearch
mkdir -p /var/lib/elasticsearch/tmp
chown -R elasticsearch.elasticsearch /var/lib/elasticsearch/tmp
Проверьте разрешения на вашем /tmp/
каталог. Должно быть, было noexec
,
/tmp
потребности exec
поддержать JNA. Обходной путь должен указать tmp
каталог в файле sysconfig эластичного поиска.
Что-то вроде export JAVA_OPTS="-Djava.io.tmpdir=$ES_HOME/tmp"
Убедитесь, что есть $ES_HOME/tmp
каталог и elasticsearch
Пользователь имеет права на запись в него.
У меня была эта проблема, так как я использовал защищенную ОС, а также потому, что umask по умолчанию 0027
,
Та же проблема произошла со мной в Windows 10 при запуске из командной строки:
unable to load JNA native support library, native methods will be disabled.
Чтобы решить эту проблему, достаточно было запустить asticsearch.exe с правами администратора (нажмите Пуск -> введите "Команда" -> щелкните правой кнопкой мыши "Командная строка" -> выберите "Запуск от имени администратора")
В Ubuntu 18.04 решение было
sudo systemctl edit --full elasticsearch.service
добавление строки
Environment=ES_JAVA_OPTS="-Djava.io.tmpdir=/var/lib/elasticsearch/tmp"
выход с -x как в vi
перезапуск службы
sudo systemctl перезапустить elasticsearch.service
Для меня ниже работали:
PUT your_index_name/_settings
{
"index": {
"blocks": {
"read_only_allow_delete": "false"
}
}
}
Я перешел по ссылке ниже:
https://discuss.elastic.co/t/forbidden-12-index-read-only-allow-delete-api/110282/4