У меня есть 3 кластера ElasticSearch 6.3.2: основной, восточный и западный. 'main' сконфигурирован для выполнения поиска между кластерами на востоке и западе Это хорошо работает, так как я могу выполнять POST-запросы к main и получать данные из всех 3 кластеров. Однако у меня возникают трудности при выполнении некоторых запросов GET в удаленные кластеры из main. Например:
http://esmain.example.com:9200/west:error-2019.04/_search
Производит хиты; одна запись имеет _id из "M2ywYGoBhIcw2VqxQ9FD"
Если я попытаюсь запросить только эту запись через GET, как в:
http://esmain.example.com:9200/west:error-2019.04/error/M2ywYGoBhIcw2VqxQ9FD
Я получаю:
{
error: {
root_cause: [
{
type: "index_not_found_exception",
reason: "no such index",
resource.type: "index_expression",
resource.id: "west:error-2019.04",
index_uuid: "_na_",
index: "west:error-2019.04"
}
],
type: "index_not_found_exception",
reason: "no such index",
resource.type: "index_expression",
resource.id: "west:error-2019.04",
index_uuid: "_na_",
index: "west:error-2019.04"
},
status: 404
}
Если я сделаю тот же запрос через POST на http://esmain.example.com:9200/west:error-2019.04/_search?ignore_unavailable=true&size=1&timeout=300000ms
с этим телом:
{
"query": {
"bool": {
"must":
{ "match": { "_id": "M2ywYGoBhIcw2VqxQ9FD" } }
}
}
}
Я получил правильную запись, без ошибок. Записи, находящиеся в главном кластере, могут быть запрошены через GET без проблем (т. Е. http://esmain.example.com:9200/error-2019.04/error/rf2P2mkBIndI5iSJGgRd),, поэтому я почти уверен, что мой тип документа и синтаксис верны.
Хотя POST - это обходной путь, я хотел бы предоставить разработчикам простой в использовании URL-адрес, а не тело POST, поскольку это облегчает им поиск записи об ошибке.