Я пытаюсь выполнить ping локально работающий elasticsearch, используя elasticsearch.jquery.min.js, и каждый раз я получаю ошибку «нет живого соединения».Отключено клиентское соединение elasticsearch.js: Access-Control-Allow-Origin не распознан?
ETA: В Chrome я вижу, что похоже на довольно низкий уровень «Соединение отказано». Я разрабатываю MacOS X, и мой браузер указывает на страницу через http://localhost/~myuserid/SiteName/
. Когда я обращаюсь к localhost:9200
, это явно подпадает под требования к CORS для кросс-домена.
я вижу следующее сообщение об ошибке в консоли Chrome:
XMLHttpRequest cannot load http://localhost:9200/?hello=elasticsearch!.
No 'Access-Control-Allow-Origin' header is present on the requested resource.
Origin 'http://localhost' is therefore not allowed access.
Per http://enable-cors.org/server_apache.html Я добавил следующее /etc/apache2/httpd.conf:
<Directory />
Header set Access-Control-Allow-Origin "localhost:9200"
AllowOverride none
Require all denied
</Directory>
и запустить
$ sudo apachectl -t
$ sudo apachectl -k graceful
, но ошибка сохраняется. Есть ли еще одна настройка, которую я пропускаю?
Я новичок в elasticsearch.js. Есть ли что-нибудь, что мне нужно сделать на стороне elasticsearch, чтобы разрешить клиентские соединения из браузера или что-то еще?
Я следую the book в моей пинг попытки:
var client = new $.es.Client({
hosts: 'localhost:9200'
});
client.ping(
{
requestTimeout: Infinity,
// undocumented params are appended to the query string
hello: "elasticsearch!"
},
function (error) {
if (error) {
console.error('elasticsearch cluster is down!');
console.error(error);
} else {
console.log('All is well');
}
}
);
, но я получаю следующее сообщение об ошибке (ы):
"WARNING: 2015-10-10T07:00:16Z" elasticsearch.jquery.min.js:14:10575
Unable to revive connection: http://localhost:9200/
"WARNING: 2015-10-10T07:00:16Z" elasticsearch.jquery.min.js:14:10575
No living connections
Я могу подключиться с помощью локон в командной строке только хорошо, тянуть и вставлять данные и т.д .:
$ curl "localhost:9200/_cat/indices?v"
health status index pri rep docs.count docs.deleted store.size pri.store.size
green open fuddle 1 0 3 0 12.9kb 12.9kb
green open faddle 1 0 0 0 144b 144b
ETA Дополнительная диагностика. Google Chrome показывает следующие сетевые трассы для неудачной попытки. На уровне HTTP ответ выглядит так, как будто это происходит.
General
Remote Address:[::1]:9200
Request URL:http://localhost:9200/?hello=elasticsearch!
Request Method:HEAD
Status Code:200 OK
Response Headers
Content-Length:0
Content-Type:text/plain; charset=UTF-8
Request Headers
Accept:text/plain, */*; q=0.01
Accept-Encoding:gzip, deflate, sdch
Accept-Language:en-US,en;q=0.8
Connection:keep-alive
Content-Length:0
Host:localhost:9200
Origin:http://localhost
Referer:http://localhost/~browsc3/Opticon/
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36
Query String Parameters
view URL encoded
hello:elasticsearch!
Тот же запрос в Wget:
wget http://localhost:9200/?hello=elasticsearch!
--2015-10-10 09:47:13-- http://localhost:9200/?hello=elasticsearch!
Resolving localhost... ::1, 127.0.0.1
Connecting to localhost|::1|:9200... connected.
HTTP request sent, awaiting response... 200 OK
Length: 342 [application/json]
Saving to: 'index.html?hello=elasticsearch!'
index.html?hello=elastics 100%[=====================================>] 342 --.-KB/s in 0s
2015-10-10 09:47:13 (65.2 MB/s) - 'index.html?hello=elasticsearch!' saved [342/342]
Я действительно в недоумении, куда идти отсюда. Я вижу много ссылок на ошибку на googlz, но ни одно из этих обстоятельств не кажется отдаленно похожим. Мне кажется, что я просто нахожусь в какой-то неправильной конфигурации, но я не могу найти ничего, что могло бы указать на то, что это.
Известно, что в клиентской библиотеке Javascript есть ошибка при объединении пулов. Ваша проблема выглядит много [как этот] (https://github.com/elastic/elasticsearch-js/issues/196). – Val
Видел, что один, но обстоятельства кажутся разными. Там, пул умирает после работы на некоторое время. В моем случае никогда не было никакой связи. Первоначальная попытка установить соединение сбой сразу же с ошибкой «ПОДКЛЮЧЕНИЕ ПОДКЛЮЧЕНИЯ» на некотором низком уровне. Поведение кажется таким же, как когда elasticsearch не запускается. – Scott
Вещи, которые я рассмотрел: проблема с перекрестным доменом AJAX (хотя это все на локальном хосте: apache, elasticsearch, browser и все); некоторый недостающий компонент или конфигурация на elasticsearch для включения или разрешения соединения (хотя я не могу найти никаких указаний на то, что может быть), несоответствие API или версии (я использую ES 1.7 и 1.7 elasticsearch.js API и пробовал последний jQuery на линиях 1.x и 2.x), проблемы с браузером (такое же поведение в Chrome и Firefox) и множество других «ну, не могли бы повредить возможности», ни одна из которых не была ключевым. – Scott