Есть ли способ вручную установить идентификатор документа ElasticSearch при вставке через AWS Kinesis Firehose?

У меня есть AWS Kinesis Firehose Stream, настроенный для подачи данных в кластер AWS ElasticSearch, и я могу успешно вставлять документы, отправляя их в Firehose Stream, который загружает их в ElasticSearch.

Но я хотел бы иметь возможность вручную указывать / устанавливать значение id документа при его отправке в поток Firehose. Я успешно использую AWS PHP SDK для отправки данных в Firehose, я просто не могу понять, есть ли способ вручную установить id документа.

$firehoseParams = [
    'DeliveryStreamName' => 'myStreamName', // REQUIRED
    'Record' => [ // REQUIRED
        'Data' => '{"json_encoded": "data", ...}', // REQUIRED
    ],
];
$firehoseResult = $this->_firehoseClient->putRecord($firehoseParams);

Я пробовал устанавливать значения id, _id и esDocumentId в данных JSON, но безрезультатно.

У кого-нибудь есть идеи?


person Alex Coleman    schedule 10.05.2016    source источник
comment
Несколько лет назад я пытался изменить идентификатор один раз, и это привело к тому, что некоторые запросы не возвращали правильные значения, например, при использовании avg. Так что вы можете захотеть дважды проверить, что это работает, когда вы в этом разберетесь.   -  person WoodyDRN    schedule 16.07.2021


Ответы (1)


Вы можете использовать Kinesis Data Streams для этой цели, вы можете отправлять свои документы в поток и с помощью лямбда-функции вы можете предоставить свойство _id с помощью официального Elasticsearch API.

person rounak tadvi    schedule 19.01.2021