Подтвердить что ты не робот

ES достижимо от завитка, но не от Marvel/Sense

Я нахожусь в течение 2 часов моего погружения с эластичным поиском. Я успешно установил ES с Marvel (с marvel.agent.enabled: false в config/elasticsearch.yml) и смог сделать успешные запросы от Sense. Я перезапустил свою машину разработки, и теперь, когда я делаю следующий запрос на Sense, он отвечает:

Request failed to get to the server (status code: 0):

Elasticsearch may not be reachable or you may need to check your CORS settings.If CORS is enabled, try turning off Sense Basic Authentication support under Setting (cog icon).This will result in a less strict CORS enforcement by the browser.
Please check the marvel documentation for more information.

Запрос (источник):

PUT /megacorp/employee/1
{
"first_name" : "John",
"last_name" :  "Smith",
"age" :        25,
"about" :      "I love to go rock climbing",
"interests": [ "sports", "music" ]
}

Как указано, я проверил, доступен ли ES, сделав аналогичный запрос на завиток:

Запрос:

curl -XPUT http://localhost:9200/megacorp/employee/100 -d '{ "first_name" : "test" }'

Ответ:

{"_index":"megacorp","_type":"employee","_id":"100","_version":1,"created":true}

Это заставляет меня думать, что ES доступен.

Перейдя к следующей проверке, вам может потребоваться проверить настройки CORS. Я добавил следующую конфигурацию elasticsearch.yml(и перезапустил ES) на основе этой рекомендации:

http.cors.enabled: true
http.cors.allow-origin: /.*/  
http.cors.allow-credentials: true

Но никаких изменений в поведении нет.

Переключение "Поддержка Basic Auth" в настройках Marvel/Smart также не влияет.

Приветствуем любые указатели на то, что может пойти не так.

4b9b3361

Ответ 1

Попробуйте запустить страницу marvel/sense html в другом браузере или в режиме private/incognito. У меня была такая же проблема, и это решило. Я думаю, что это связано с тем, что настройки хранятся в cookie или что-то не совсем уверенное.

Ответ 2

У меня тоже была такая же проблема, и в соответствии с документами Elasticsearch здесь: http://www.elastic.co/guide/en/marvel/current/configuration.html#cors, вы должны включить CORS.

Чтобы подвести итог, откройте файл elasticsearch.yml в конфиге/папке и поместите этот

http.cors.enabled: true
http.cors.allow-origin: /.*/  
http.cors.allow-credentials: true 

где-то там, возможно, раздел "Сеть и HTTP".

Затем, после того, как я перезапустил elasticsearch, это сработало для меня в Marvel Sense.

Ответ 3

Поэтому, пытаясь запустить команды в смысле, попробуйте использовать IP-адрес машины, на которой размещен сервер, вместо http://localhost:9200/_plugin/marvel/sense/index.html. Это сработало для меня.

Ответ 4

В ваших журналах кластера ES (в одном node) найдите строку, похожую на

[INFO ][http ] [c7_64] bound_address {inet[/0:0:0:0:0:0:0:0:9201]}, publish_address {inet[/192.168.88.128:9201]}

Вас интересует, что после publish_address. При доступе к Sense используйте IP: PORT, который вы видите там. В моем примере URL-адрес Sense будет выглядеть следующим образом:

http://192.168.88.128:9201/_plugin/marvel/sense/index.html

Часть CORS в основном действительна для сценария, в котором Marvel устанавливается в отдельный кластер, и это не должно быть необходимо, если Marvel установлен в том же кластере, что и контролируемые узлы. Он также нужен, когда Shield установлен в кластере.

Ответ 5

У меня тоже была такая же проблема. Убедитесь, что поле сервера не пустое. Моя проблема решена после заполнения поля локальными

Ответ 6

У меня была такая же проблема с Chrome. Очистка данных браузера решает мою проблему. Это в истории → очистка данных браузера → проверка файлов cookie и других данных сайта и плагина, кешированных изображений и файлов, данных формы автозаполнения, данных размещенного приложения.

Не уверен, какой из них сделал трюк, но так, как я это сделал, и это сработало. Надеюсь, это поможет.

Ответ 7

Не строго связано с Marvel, но когда у меня возникает вопрос подключения к elasticsearch из "внешнего" сервера, мне нужно.

Измените конфигурацию elasticsearch.yml, где хост прослушивает - прослушивать все сетевые интерфейсы:

network.host: 0.0.0.0

После этого, в зависимости от вашего сервера, вы должны открыть порт tcp на вашем брандмауэре (если вы используете порт по умолчанию для elasticsearch: 9200). Например, на Centos (или RHEL) вы должны запустить:

sudo firewall-cmd --zone=public --add-port=9200/tcp --permanent
sudo firewall-cmd --reload