O plugin OpenSearch Writer do Data Integration no DataWorks grava dados offline no Alibaba Cloud OpenSearch. Este tópico aborda as edições compatíveis, limitações, mapeamentos de tipos de campo e a referência completa de parâmetros para configurar uma tarefa de sincronização em lote no modo code editor.
Edições e versões compatíveis
O OpenSearch Writer é compatível com as seguintes edições comerciais do Alibaba Cloud OpenSearch:
Industry Algorithm Edition
LLM-based AI Chat Edition
High-performance Search Edition
Vector Search Edition
Retrieval Engine Edition
Notas sobre versões:
A Versão 3 utiliza um pacote secundário. Adicione a seguinte dependência ao pom:
com.aliyun.opensearch:aliyun-sdk-opensearch:2.1.3.O OpenSearch Writer requer JDK 1.6-32 ou posterior. Execute
java -versionpara verificar a versão instalada.
Limitações
O OpenSearch Writer oferece suporte a grupos de recursos serverless (recomendado) e grupos de recursos exclusivos para Data Integration. Não há suporte para grupos de recursos personalizados.
As colunas no OpenSearch não têm ordem definida. Especifique explicitamente a ordem das colunas ao gravar dados. Colunas não especificadas assumem valores padrão ou null.
Grave dados offline no OpenSearch apenas no modo code editor.
O OpenSearch Writer valida a quantidade de colunas. A tentativa de gravar mais colunas do que as existentes na tabela de destino gera erro.
Grave dados em apenas uma tabela por tarefa. Não há suporte para múltiplas tabelas em uma única tarefa.
Na reexecução da tarefa, os registros existentes são sobrescritos com base no ID do documento. A lista de colunas deve incluir uma coluna de ID como identificador único.
Tipos de campo compatíveis
O OpenSearch Writer oferece suporte aos seguintes mapeamentos de tipos de dados do OpenSearch.
|
Categoria |
Tipo de dado do OpenSearch |
|
Inteiro |
INT |
|
Ponto flutuante |
DOUBLE, FLOAT |
|
String |
TEXT, LITERAL, SHORT_TEXT |
|
Data e hora |
INT |
|
Booleano |
LITERAL |
Modos de gravação
Use o parâmetro writeMode para controlar a gravação dos dados e garantir a idempotência da operação.
|
Modo |
Comportamento |
Atômico |
Versões compatíveis |
|
|
Em reexecuções, limpa os dados existentes e importa os novos dados |
Sim |
Todas as versões |
|
|
Insere dados como atualização |
Sim |
Apenas Versão 2 (incompatível com a Versão 3) |
Inserções em lote no OpenSearch não são operações atômicas. Alguns registros podem ter sucesso enquanto outros falham. Escolha o writeMode conforme seus requisitos de consistência.
Considerações de desempenho
O OpenSearch é otimizado para consultas, não para gravações. A capacidade de transações por segundo (TPS) para operações de escrita é limitada.
Geralmente, um único registro de dados tem menos de 1 MB.
Normalmente, uma única escrita em lote tem menos de 2 MB.
Defina o
batchSizecom base nos recursos alocados à sua conta. O valor padrão é300registros por lote.
Configure uma tarefa de sincronização de dados
Configure o OpenSearch Writer no modo code editor. Para o procedimento geral, consulte Configurar no modo code editor.
As seções a seguir apresentam exemplos de código e referências de parâmetros para cada grupo de edições compatível.
Industry Algorithm Edition, LLM-based AI Chat Edition e High-performance Search Edition
Exemplo de código
{
"type": "job",
"version": "1.0",
"configuration": {
"reader": {},
"writer": {
"plugin": "opensearch",
"parameter": {
"accessId": "<your-access-key-id>",
"accessKey": "<your-access-key-secret>",
"host": "http://yyyy.aliyuncs.com",
"endpoint": "http://yyyy.aliyuncs.com",
"indexName": "datax_xxx",
"table": "datax_yyy",
"column": [
"appkey",
"id",
"title",
"gmt_create",
"pic_default"
],
"batchSize": 500,
"writeMode": "add",
"version": "v2",
"ignoreWriteError": false
}
}
}
}
Substitua os espaços reservados pelos valores reais:
|
Espaço reservado |
Descrição |
Exemplo |
|
|
Seu AccessKey ID |
|
|
|
Seu AccessKey secret |
|
Parâmetros
|
Parâmetro |
Descrição |
Obrigatório |
Padrão |
|
|
AccessKey ID do seu par de AccessKey. |
Sim |
N/A |
|
|
AccessKey secret do seu par de AccessKey. |
Sim |
N/A |
|
|
Nome de domínio de tráfego do OpenSearch. Obtenha esse valor na página de detalhes da instância no console do OpenSearch. |
Sim |
N/A |
|
|
Endpoint de controle do OpenSearch. Obtenha esse valor na página de endpoints de serviço da sua edição. Por exemplo, consulte Service endpoints para a Industry Algorithm Edition. |
Sim |
N/A |
|
|
Nome do projeto (índice) do OpenSearch. |
Sim |
N/A |
|
|
Nome da tabela de destino. Há suporte para apenas uma tabela por tarefa. |
Sim |
N/A |
|
|
Colunas de destino da gravação. Use |
Sim |
N/A |
|
|
Número de registros por escrita em lote. Obrigatório para tabelas particionadas; omita para tabelas não particionadas. |
Obrigatório para tabelas particionadas |
|
|
|
Modo de gravação: |
Sim |
N/A |
|
|
Define se falhas de gravação no lote atual devem ser ignoradas. Defina como |
Não |
|
|
|
Versão do OpenSearch, como |
Não |
|
Vector Search Edition e Retrieval Engine Edition
Exemplo de código
{
"stepType": "opensearch",
"parameter": {
"indexName": "<your-index-name>",
"datasource": "<your-datasource-name>",
"table": "<your-table-name>",
"column": [
{
"name": "col3double",
"type": "DOUBLE"
},
{
"name": "col2vector",
"type": "MULTI_FLOAT"
}
],
"batchSize": "500"
},
"name": "Writer",
"category": "writer"
}
Parâmetros
|
Parâmetro |
Descrição |
Obrigatório |
Padrão |
|
|
Nome da tabela de destino. Há suporte para apenas uma tabela por tarefa. |
Sim |
N/A |
|
|
Colunas de destino da gravação. Cada entrada especifica um |
Sim |
N/A |
|
|
Número de registros por escrita em lote. Obrigatório para tabelas particionadas; omita para tabelas não particionadas. |
Obrigatório para tabelas particionadas |
|