В документе отсутствует исключениеasticsearch php - PullRequest
0 голосов
/ 30 августа 2018

Я хочу обновить свой существующий документ частично в упругом поиске. Я пишу свой запрос на обновление, который частично обновляет документ вместо всего документа Пример данных, которые необходимо обновить

    {
  "took": 1,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": 1,
    "max_score": 3.0780919,
    "hits": [
      {
        "_index": "trending",
        "_type": "doc",
        "_id": "bx-1605773",
        "_score": 3.0780919,
        "_routing": "1",
        "_source": {
          "id": "bx-1605773",
          "name": "new",
          "db_id": 1605773,
          "user_id": "u-2",
          "box_user": {
            "id": 2,
            "box_id": 1605773,
            "username": "yahoo",
            "full_name": "Yahoo1",
            "is_private": true
          },
          "status": "M",
          "created_at": "2018-08-30T11:58:10Z",
          "type": {
            "name": "box",
            "parent": "u-2"
          },
          "box_posts": []
        }
      }
    ]
  }
}

В этом документе я только обновляю имя ящика и статус ящика, для этого я пишу следующий запрос в ES

$params = [
            'index' => 'trending',
            'type' => 'doc',
            'id' => $this->prepareId($box->id, 'bx'),
            'body' => [
                'doc' => [
                    'name' => $box->name,
                ]
            ]
        ];
        try {
            $response = $this->client->update($params);
        } catch (\Exception $ex) {
            return false;
        }

Но когда я запускаю этот запрос, я получаю следующее исключение

{"error":{"root_cause":[{"type":"document_missing_exception","reason":"[doc][bx-1605773]: document missing","index_uuid":"h8kvjFk7S0usH3YBO-697A","shard":"0","index":"trending"}],"type":"document_missing_exception","reason":"[doc][bx-1605773]: document missing","index_uuid":"h8kvjFk7S0usH3YBO-697A","shard":"0","index":"trending"},"status":404}

Даже этот запрос я нашел на основном сайте эластичного поиска

Я не знаю, где я делаю ошибку

1 Ответ

0 голосов
/ 30 августа 2018

Вам не хватает параметра routing, поскольку вы проиндексировали документ с помощью "routing": "1", вам также необходимо указать эту информацию при обновлении документа, в противном случае документ не будет найден:

$params = [
        'index' => 'trending',
        'type' => 'doc',
        'id' => $this->prepareId($box->id, 'bx'),
>>>     'routing' => 1,
        'body' => [
            'doc' => [
                'name' => $box->name,
            ]
        ]
    ];
    try {
        $response = $this->client->update($params);
    } catch (\Exception $ex) {
        return false;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...