2013-12-06 3 views
0

У меня мало серверов ES в режиме балансировки нагрузки. Когда я выполняю запрос к host1: 9200, то один из хостов1, host2, host3 может обрабатывать этот запрос. Можно ли как-то получить это имя хоста в ответе ES?ES имя хоста в ответе

Другими словами, я ищу эквивалент «select myfield, @@ servername FROM table» в MS SQL Server.

Благодаря

+0

попробуйте 'host1: 9200/_nodes'. – Roopendra

+0

Я скорее искал что-то вроде: я выполнить запрос {} и в ответ у меня есть: { "взял": 12, " timed_out": ложные, "_shards": { «всего ": 5, "успешно": 3, "не удалось": 0 }, ожидается ответ будет: { "взял": 12, "timed_out": ложные, "_shards": { «всего»: 5, «успешный»: 3, «failed»: 0, «hostname»: «MYFUNNYHOST3», }, – zuko

+1

Возможно, я могу использовать или реализовать какой-то плагин? – zuko

ответ

2

Если вы используете HTTP API вы можете получить имя хоста из Host заголовка в ответе.

Например, если вы сделаете запрос с завитком и использовать -v флаг, он печатает заголовок ответа, где вы можете найти имя хоста, который посылает ответ, в этом случае локального хоста:

curl -XGET "http://localhost:9200/test/_search" -v -d ' 
{ 
    "query": {"match_all":{}} 
}' 

* About to connect() to localhost port 9200 (#0) 
* Trying ::1... connected 
* Connected to localhost (::1) port 9200 (#0) 
> GET /test/_search HTTP/1.1 
> User-Agent: curl/7.21.4 (universal-apple-darwin11.0) libcurl/7.21.4 OpenSSL/0.9.8r zlib/1.2.5 
> Host: localhost:9200 
> Accept: */* 
> Content-Length: 32 
> Content-Type: application/x-www-form-urlencoded 
> 
< HTTP/1.1 200 OK 
< Content-Type: application/json; charset=UTF-8 
< Content-Length: 875 
< 

В любом случае помните, что если ваши данные разбиты на несколько осколков, более одного хоста могут быть частью процесса запроса.

Смежные вопросы