Невозможно загрузить собственную библиотеку поддержки 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 ГБ и перезагрузил машину. И упругий поиск начал работать просто отлично.

  1. Перейдите в /etc/sysconfig/asticsearch
  2. Добавить ES_JAVA_OPTS="-Djna.tmpdir=/var/lib/asticsearch/tmp"
  3. начать эластичный поиск.
  4. Теперь вы можете видеть папку tmp, созданную в / var / lib /asticsearch/.
  5. Эта папка должна иметь разрешение на выполнение для пользователя "asticsearch"
  6. проверьте разрешение с помощью namei -l /var/lib/asticsearch
  7. корневой корень dr-xr-xr-x / корневой корень drwxr-xr-x var корневой корень drwxr-xr-x lib drwxr-x--- эластичный поиск

Я надеюсь, что ваша проблема будет решена.

У меня была такая же проблема на сервере CentOS7 cPanel с ElasticSearch 7.8, установленным через YUM. В соответствии с ответом я сделал следующее:

  1. Задавать ES_JAVA_OPTS="-Djna.tmpdir=/var/lib/elasticsearch/tmp" в /etc/sysconfig/elasticsearch
  2. mkdir -p /var/lib/elasticsearch/tmp
  3. 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

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