Я установил Elasticsearch на сервер EC2 Ubuntu 14.
Я вижу, что он работает:
elastic@ip-xxx-xx-xx-xxx:~$ curl -get localhost:9200
{
"name" : "ip-xxx-xx-xx-xxx",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "V6axWUV9SoqABC8sX62XMQ",
"version" : {
"number" : "7.0.1",
"build_flavor" : "default",
"build_type" : "deb",
"build_hash" : "e4efcb5",
"build_date" : "2019-04-29T12:57:03.145736Z",
"build_snapshot" : false,
"lucene_version" : "8.0.0",
"minimum_wire_compatibility_version" : "6.7.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
Я добавил его в группу безопасности:
Но я не могу подключиться с удаленного:
C:\>curl -get http://XX.XX.XXX.XX:9200/
curl: (7) Failed to connect to XX.XX.XXX.XX port 9200: Connection refused
netstat -nlp | grep 9200:
tcp6 0 0 127.0.0.1:9200 :::* LISTEN 29467/java
tcp6 0 0 ::1:9200 :::* LISTEN 29467/java
Это содержимое elasticsearch.yml после удаления всех комментариев:
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
и, пожалуйста, поделитесь файлом elasticsearch.yml
@hamidbayat Я добавил результат от netstat -nlp |grep 9200
@hamidbayat, а также elasticsearch.yml
эта ошибка возникает из-за команды сервера, а не команды curl. вы уверены, что порт прослушивания 9200? попробуйте: netstat -ln | grep 9200 и посмотрите статус этого порта.
Я обновил свой вопрос, включил результат netstat -nlp |grep 9200
@ Алон, можешь добавить http-порт в свою группу безопасности AWS?
@AmitKhandelwal, если я выберу HTTP, а не TCP, он автоматически выберет порт 80 и не позволит мне его изменить.
нет необходимости раскомментировать http.port. по умолчанию установлено значение 9200.





добавьте следующую строку в elasticsearch.yml и перезапустите службу elasticsearch:
network.host: xxx.xxx.xxx.xxx
xxx.xxx.xxx.xxx — IP-адрес вашего сервера elasticsearch.
Теперь я не могу подключиться как с удаленного, так и с одной и той же машины. Я также попытался раскомментировать настройку http.port.
@Alon Проблема еще не решена? можете ли вы отправить netstat -nlp |grep 9200 после изменения настроек и перезапуска службы?
кажется, что AWS не позволяет использовать IP в качестве network.host. пожалуйста, попробуйте это и дайте мне знать, если это работает: network.host: _ec2_
Я решил проблему.
Первое, что мне пришлось настроить, это network.host, но очень важно отметить, что он не работал с IP-адресом, к которому я пытался подключиться с клиента, потому что это общедоступный IP-адрес EC2. Мне пришлось использовать частный IP-адрес EC2.
Но потом я продолжал получать ту же ошибку, и я обнаружил, что алгоритм координации кластера изменился в Elasticsearch 7.0 и для его безопасности требуется определенная настройка. Elastic ослабляет это требование (то есть они работают в менее безопасном режиме), когда кто-то привязывается только к локальному хосту, но если / когда кто-то изменяет network.host, они обеспечивают безопасную настройку кластера.
Итак, поскольку я использую кластер с одним узлом, мне пришлось добавить следующий параметр в раздел Discovery в elasticsearch.yml:
discovery.type: single-node
Отлично, вы сэкономили несколько часов на моей отладке, проголосовали за вопрос и ответ
было бы также здорово, если бы вы могли связать официальные документы ES, в которых есть подробности об измененном алгоритме координации кластера и где они предлагают discovery.type: single-node
пожалуйста, запустите эту команду «netstat -nlp | grep 9200» и поделитесь выводом