Я довольно новичок в ElasticSearch и сейчас просто выясняю некоторые вещи, но здесь есть проблема. После всех проблем, связанных с заменой сервера, мы перенесли узлы, но в одном из них есть некоторые недостающие данные. У нас есть два узла, в которых есть записи с одинаковым идентификатором. В первом случае все в порядке, но во втором некоторые записи, кажется, отсутствуют. Например, если я отправлю запрос следующим образом:
GET /fnh_detailbeta/main/61UkVww8QGu093RirFG84A
Я получу следующую ошибку (в Marvel — Sense)
{
"error": "NoShardAvailableActionException[[fnh_detailbeta][0] null]",
"status": 503
}
Итак, сейчас я пытаюсь сравнить все записи в узле 1 с записями в узле 2 через ElasticSearch PHP. Вот PHP, который я пытаюсь запустить:
<?php
require '../connector/vendor/autoload.php';
$number = 1;
$params = array();
$params['hosts'] = array (
'146.185.164.121:9200', // IP + Port
);
$client = new Elasticsearch\Client($params);
$getParams = array();
$getParams['index'] = 'fnh_mainbeta';
$getParams['type'] = 'main';
//REQUEST AMOUNT
$json = '{"query": {"match_all": {}},"size": 1,"from":'.$number.'}';
$getParams['body'] = $json;
$retDoc = $client->search($getParams);
$total = $retDoc['hits']['total'];
//END OF REQUEST AMOUNT
//REQUEST ID
for ($i = 1; $i <= $total; $i++) {
$json = '{"query": {"match_all": {}},"size": 1,"from":'.$number.'}';
$getParams = array();
$getParams['index'] = 'fnh_mainbeta';
$getParams['type'] = 'main';
$getParams['body'] = $json;
$getParams['ignore'] = 503;
$getParams['ignore'] = 404;
$retDoc = $client->search($getParams);
$found_id = $retDoc['hits']['hits'][0]['_id'];
echo $found_id;
//REGUEST SECOND DB
$getParams = array();
$getParams['index'] = 'fnh_detailbeta';
$getParams['type'] = 'main';
$getParams['id'] = '61UkVww8QGu093RirFG84A';
$retDoc = $client->get($getParams);
$found_id_two = $retDoc['_id'];
echo $found_id_two;
//END OF REQUEST SECOND DB
$number++;
sleep(1);
};
//END OF REQUEST AMOUNT
Это еще не закончено, но я получаю фатальную ошибку, которая выходит из скрипта:
Fatal error: Uncaught exception 'Guzzle\Http\Exception\ServerErrorResponseException' with message 'Server error response
[status code] 503
[reason phrase] Service Unavailable
Эта ошибка появляется, когда NoShardAvailableActionException [[fnh_detailbeta] [0] null] … Итак, вопрос таков:
Каков лучший способ отловить эту ошибку (что-то вроде IF error THEN echo «error») без остановки выполнения PHP. Другими словами — я хочу определить эту ошибку, удалить эту запись и пойти дальше, сравнивая узлы.
Любая помощь будет оценена!
Задача ещё не решена.
Других решений пока нет …