Я использую Elasticsearch с PHP и после необходимого отображения данных. Я вставил данные через функцию вставки, как показано ниже:
public function insertNode ($event_id) {
global $conn1;
$client = $this->elasticclient;
$params = null;
$stmt = "SELECT
events.event_id,
events.event_title,
events.event_details,
DATE_FORMAT(events.added_date,'%d-%m-%Y') AS added_date
FROM events
WHERE events.event_id = $event_id";
$query = $conn1->prepare($stmt);
$query->execute();
$rows = $query->fetchAll(PDO::FETCH_ASSOC);
foreach ($rows as $row) {
$params = [
'index' => 'eventree',
'type' => 'events',
'id' => $row['event_id'],
'body' => [
'EVENT_TITLE' => $row['event_title'],
'EVENT_DETAILS' => $row['event_details'],
'START_TIME' => $row['start_time'],
'ADDED_DATE' => $row['added_date'],
'STATUS' => $row['status']
]
];
}
$responses = $client->index($params);
return true;
}
ниже вы можете увидеть, как я обновляю данные:
public function updateNode($event_id) {
global $conn1;
$client = $this->elasticclient;
$params = null;
$stmt = "SELECT
events.event_id,
events.event_title,
events.event_details,
events.status,
DATE_FORMAT(events.added_date,'%d-%m-%Y') AS added_date
FROM events
WHERE events.event_id = $event_id";
$query = $conn1->prepare($stmt);
$query->execute();
$rows = $query->fetchAll(PDO::FETCH_ASSOC);
foreach ($rows as $row) {
$params = [
'index' => 'eventree',
'type' => 'events',
'id' => $row['event_id'],
'body' => [
'doc' => [
'EVENT_TITLE' => $row['event_title'],
'EVENT_DETAILS' => $row['event_details'],
'START_TIME' => $row['start_time'],
'ADDED_DATE' => $row['added_date'],
'STATUS' => $row['status']
]]];
}
$responses = $client->update($params);
return true;
}
Проблема в том, что процесс обновления не будет принимать идентификаторы больше 9, хотя есть записи с идентификаторами, превышающими число 9. Это ошибка, которую я получаю после запуска процесса обновления:
{
"error": "{\"error\":{\"root_cause\":[{\"type\":\"document_missing_exception\",\"reason\":\"[events][10]: document missing\",\"index_uuid\":\"6l5vWeLLSb6CvcCsqTws9g\",\"shard\":\"1\",\"index\":\"eventree\"}],\"type\":\"document_missing_exception\",\"reason\":\"[events][10]: document missing\",\"index_uuid\":\"6l5vWeLLSb6CvcCsqTws9g\",\"shard\":\"1\",\"index\":\"eventree\"},\"status\":404}"}
Ваш php код неверен, вы зациклены $rows
и переопределить $params
переменная все время!
правильный код
public function insertNode($event_id) {
global $conn1;
$client = $this->elasticclient;
$params = null;
$stmt = "SELECT
events.event_id,
events.event_title,
events.event_details,
DATE_FORMAT(events.added_date,'%d-%m-%Y') AS added_date
FROM events
WHERE events.event_id = $event_id";
$query = $conn1->prepare($stmt);
$query->execute();
$rows = $query->fetchAll(PDO::FETCH_ASSOC);
foreach ($rows as $row) {
$params = [
'index' => 'eventree',
'type' => 'events',
'id' => $row['event_id'],
'body' => [
'EVENT_TITLE' => $row['event_title'],
'EVENT_DETAILS' => $row['event_details'],
'START_TIME' => $row['start_time'],
'ADDED_DATE' => $row['added_date'],
'STATUS' => $row['status']
]];
$responses = $client->index($params);
}
return true;
}
public function updateNode($event_id) {
global $conn1;
$client = $this->elasticclient;
$params = null;
$stmt = "SELECT
events.event_id,
events.event_title,
events.event_details,
events.status,
DATE_FORMAT(events.added_date,'%d-%m-%Y') AS added_date
FROM events
WHERE events.event_id = $event_id";
$query = $conn1->prepare($stmt);
$query->execute();
$rows = $query->fetchAll(PDO::FETCH_ASSOC);
foreach ($rows as $row) {
$params = [
'index' => 'eventree',
'type' => 'events',
'id' => $row['event_id'],
'body' => [
'doc' => [
'EVENT_TITLE' => $row['event_title'],
'EVENT_DETAILS' => $row['event_details'],
'START_TIME' => $row['start_time'],
'ADDED_DATE' => $row['added_date'],
'STATUS' => $row['status']
]]];
$responses = $client->update($params);
}
return true;
}