대량 데이터 로드

plans-img 모든 플랜 에서 사용 가능

deployment-img self-hosted 배포판

대량 로드 기능을 사용하여 JSONL 파일에서 대규모 데이터를 명령행을 사용하여 Mattermost로 가져올 수 있습니다. 이 기능은 기존 시스템에서 데이터를 이전하거나 새로운 설치에 데이터를 사전으로 채우는 데 가장 적합합니다.

다음과 같은 데이터 유형을 가져올 수 있습니다:

  • 채널 (공개 및 비공개)

  • 사용자

  • 사용자의 팀 멤버십

  • 사용자의 채널 멤버십

  • 사용자의 알림 설정

  • 게시물 (일반, 답글이 아닌 게시물)

  • 게시물의 답글

  • 게시물의 반응

  • 게시물의 파일 첨부

  • 개인 메시지 및 그룹 메시지 채널

  • 개인 메시지 및 그룹 메시지

  • 사용자가 자신에게 보내는 개인 메시지

  • 권한 계획

  • 사용자 지정 이모지

추가 게시물 유형의 가져오기는 아직 지원되지 않습니다.

대량로딩 명령어 개요

대량로딩 명령은 중단 및 이득성이 가능합니다

가져오기가 어떤 이유로 중단되어도, 다음 실행 때 중단된 곳부터 계속됩니다. 동일한 데이터 파일로 명령을 반복 실행할 수 있으며, 데이터는 한 번만 가져옵니다. 수신된 게시물에 대한 타임스탬프와 일치하는 기존 게시물은 수신된 데이터에 의해 첨부 파일이 대체됩니다. v5.20 이전에는 동일한 타임스탬프를 가진 게시물의 업데이트가 이전 게시물에 추가되었습니다.

대량로딩 명령은 라이브 시스템에서 실행할 수 있습니다

명령을 실행하기 위해 Mattermost를 종료할 필요는 없지만, 실행 간 시스템 사용자에 의해 수행된 변경 사항이 데이터 파일에 해당하는 필드가 있는 경우 덮어씌워질 수 있습니다.

일부 데이터 필드는 선택 사항입니다

모든 필드가 필수는 아닙니다. 가져오는 객체에서 선택 사항 필드가 누락된 경우, 데이터베이스의 해당 필드의 현재 값은 변경되지 않습니다.

대량로딩 명령은 동기화 도구가 아닙니다

대량로딩 명령을 사용하여 Mattermost 데이터베이스에서 객체나 해당 필드를 제거할 수는 없습니다. 명령어는 필드를 생성하거나 덮어씁니다.

Important

대량로딩 명령은 mmctl에서 실행되며 mmctl의 보안 컨텍스트에서 작동합니다. 즉, Mattermost 데이터베이스의 모든 항목에 대한 액세스 및 변경 권한이 있습니다.

대량 데이터로드

대량 로딩 명령을 실행하기 전에, 먼저 Mattermost 디렉터리에 가져오려는 데이터가 포함된 JSONL 파일을 생성해야 합니다. 파일의 이름은 아무거나 지정할 수 있지만, 여기 예시에서는 data.jsonl 로 지정되었습니다. 파일의 형식은 :ref: data-format 섹션에서 설명되어 있습니다.

다음으로 zip -r data.zip data.jsonl 명령을 실행하여 압축하세요.

mmctl의 로컬 모드 사용

Mattermost v9.5부터 로컬 모드 에서 mmctl 대량 가져오기 프로세스 명령이 서버에 파일을 업로드하지 않고도 가져오기 파일을 처리하는 기능을 지원합니다.

mmctl import process --bypass-upload <file>.zip 명령을 실행하여 가져오기를 시작하고 Mattermost 서버가 파일을 직접 읽을 수 있도록 합니다.

로컬 모드를 사용하지 않는 경우

  1. mmctl import upload 명령을 사용하여 ZIP 파일을 데이터베이스에 업로드합니다. 예를 들어: mmctl import upload data.zip.

  2. mmctl import list available 명령을 실행하여 파일이 업로드되어 사용할 준비가 되었는지 확인합니다.

  3. mmctl import process 명령을 사용하여 업로드한 파일을 가져옵니다. 예를 들어: mmctl import process <importedid>_data.zip (mmctl import list available 명령에서 업로드된 파일의 이름을 사용하세요).

데이터 형식

입력 데이터 파일은 JSONL 파일이어야 하며, 각 객체가 파일의 각 행에 있어야 합니다. 객체들은 목록에 나열된 순서대로 파일에 발생하여야 합니다.

버전

필수사항. 버전 객체는 파일의 첫 번째 행이어야 하며, 한 번만 발생하여야 합니다. 버전은 현재 1 인 대량 가져오기 도구의 버전이어야 합니다.

스키마

선택사항. 존재하는 경우, 스키마 객체들은 팀 객체들 이전에 버전 객체 이후에 발생하여야 합니다.

이모지

선택사항. 존재하는 경우, 이모지 객체들은 팀 객체들 이전에 버전 객체들 이후에 발생하여야 합니다.

선택사항. 존재하는 경우, 팀 객체들은 스키마 객체들 이후에 채널 객체들 이전에 발생하여야 합니다.

채널

선택사항. 존재하는 경우, 채널 객체들은 모든 팀 객체들 이후에 사용자 객체들 이전에 발생하여야 합니다.

사용자

선택사항. 존재하는 경우, 사용자 객체들은 파일 내의 팀 및 채널 객체들 이후에 게시물 객체들 이전에 발생하여야 합니다. 각 사용자 객체는 사용자가 속한 팀 및 채널을 정의합니다. 해당 팀 및 채널이 데이터 파일에 없다면 Mattermost 데이터베이스에 존재하여야 합니다.

게시물

선택사항. 존재하는 경우, 게시물 객체들은 마지막 사용자 객체들 이후에 직접 채널 객체들 이전에 발생하여야 합니다. 각 게시물 객체는 팀, 채널 및 메시지를 게시한 사용자의 사용자명을 정의합니다. 해당 팀, 채널 또는 사용자가 데이터 파일에 없다면 Mattermost 데이터베이스에 존재하여야 합니다.

직접 채널

선택사항. 존재하는 경우, 직접 채널 객체들은 파일 내의 모든 게시물 객체들 이후에 발생하여야 합니다.

직접 게시물

선택사항. 존재하는 경우, 직접 게시물 객체들은 파일 내의 다른 모든 객체들 이후에 발생하여야 합니다. 각 직접 게시물 객체는 채널 구성원들의 사용자명과 메시지를 게시한 사용자의 사용자명을 정의합니다. 해당 사용자명이 데이터 파일에 없다면 Mattermost 데이터베이스에 존재하여야 합니다.

버전 객체를 제외한 각 객체는 해당 객체의 고유 식별자로 사용되는 필드 또는 필드 조합을 갖습니다. 대량 로더는 고유 식별자를 사용하여 가져오는 객체가 새 객체인지 기존 객체를 업데이트하는지 결정합니다.

각 객체의 식별자는 다음 표에 나열됩니다:

각 객체와 그들의 고유 식별자들

객체

고유 식별자

버전

적용되지 않음

스키마

이름

역할

이름

이모지

이름

이름

채널

이름,

사용자

사용자명

사용자NotifyProps

사용자명

사용자팀 멤버십

, 사용자명

사용자채널 멤버십

, 채널, 사용자명

게시물

채널, 메시지, create_at

회신

게시물, 메시지, create_at

반응

게시물, 이모지_이름, create_at

첨부파일

경로

직접채널

구성원

직접게시물

채널_구성원, 사용자명, 메시지, create_at

다음 단편은 두 개의 팀(각각 두 개의 채널이 있는) 및 많은 사용자 및 많은 게시물을 가져오는 파일에서 가져온 것입니다.

 1{ "type": "version", ... }
 2{ "type": "team", "team": { "name": "팀A", ...} }
 3{ "type": "team", "team": { "name": "팀B", ...} }
 4{ "type": "channel", "channel": { "team": "팀A", "name": "채널_a1", ...} }
 5{ "type": "channel", "channel": { "team": "팀A", "name": "채널_a2", ...} }
 6{ "type": "channel", "channel": { "team": "팀B", "name": "채널_b1", ...} }
 7{ "type": "channel", "channel": { "team": "팀B", "name": "채널_b2", ...} }
 8{ "type": "user", "user": { "username": "사용자001", ...} }
 9{ "type": "user", "user": { "username": "사용자002", ...} }
10{ "type": "user", "user": { "username": "사용자003", ...} }
11{ "type": "user", ... }
12{ "type": "user", ... }
13{ "type": "user", ... }
14.
15.
16.
17{ "type": "post", { "team": "팀A", "name": "채널_a1", "user": "사용자001", ...} }
18{ "type": "post", { "team": "팀A", "name": "채널_a1", "user": "사용자001", ...} }
19{ "type": "post", { "team": "팀A", "name": "채널_a1", "user": "사용자001", ...} }
20.
21.
22.

버전 객체

버전 객체는 데이터 파일의 첫 번째 객체이어야 하며, 한 번만 표시될 수 있습니다. 버전은 대량 가져오기 도구의 버전을 나타내며 현재 1 입니다.

예시 버전 객체

명확하게 하기 위해, 객체는 일반 JSON 포맷을 사용하여 표시되었지만 데이터 파일에는 여러 행에 걸쳐 퍼져서 나타낼 수는 없습니다. 모두 한 줄에 있어야 합니다.

{
  "type": "version",
  "version": 1
}

버전 객체의 필드

Field name Type Description Validated Mandatory
type string Must be the string "version" Yes Yes
version number Must be the number 1. Yes Yes

스키마 객체

스키마 객체는 Mattermost 권한 시스템의 권한 스키마를 나타냅니다. 존재하는 경우, 스키마 객체들은 버전 객체 이후에 나타나고 팀 객체들 이전에 발생하여야 합니다.

예시 스키마 객체

명확하게 하기 위해, 객체는 일반 JSON 포맷을 사용하여 표시되었지만 데이터 파일에는 여러 행에 걸쳐 퍼져서 나타낼 수는 없습니다. 모두 한 줄에 있어야 합니다.

스키마 객체의 필드

필드명 타입 설명 확인됨 의무
name string 스키마 이름입니다. 소문자 ([a-z0-9]) 또는 _로 시작하고 길이가 2-64자여야 합니다. Yes Yes
display_name string 스키마의 표시 이름입니다. Yes Yes
scope string 스키마의 범위입니다. "team" 또는 "channel"이어야 합니다. Yes Yes
description string 스키마의 설명입니다. Yes No
default_team_admin_role Role 객체 이 스키마를 사용하는 팀에서 팀 관리자에게 적용되는 기본 역할입니다. 스키마 범위가 "team"으로 설정된 경우 필수이며, 그렇지 않으면 존재하지 않아야 합니다. Yes No
default_team_user_role Role 객체 이 스키마를 사용하는 팀에서 팀 사용자에게 적용되는 기본 역할입니다. 스키마 범위가 "team"으로 설정된 경우 필수이며, 그렇지 않으면 존재하지 않아야 합니다. Yes No
default_channel_admin_role Role 객체 이 스키마를 사용하는 채널에서 채널 관리자에게 적용되는 기본 역할입니다. "team" 및 "channel" 범위 스키마의 경우 필수입니다. Yes Yes
default_channel_user_role Role 객체 이 스키마를 사용하는 채널에서 채널 사용자에게 적용되는 기본 역할입니다. "team" 및 "channel" 범위 스키마의 경우 필수입니다. Yes Yes

Role 객체의 필드

이 객체는 스킴 객체의 구성원입니다.

필드 이름 타입 설명 유효성 검사 의무 여부
name 문자열 스키마 이름입니다.
display_name 문자열 스키마에 대한 표시 이름입니다.
description 문자열 스키마에 대한 설명입니다. 아니오
permissions 배열 롤이 부여해야 하는 권한입니다. 이는 Mattermost 권한 시스템에서 개별 권한의 이름인 문자열 배열입니다. 아니오

이모지 객체

이모지 객체는 사용자 정의 이모지를 나타냅니다. 이모지 객체가 존재하는 경우, 이는 Version 객체 이후 및 모든 Team 객체 이전에 나와야 합니다.

예시 이모지 객체

명확성을 위해 객체는 일반적인 JSON 형식을 사용하여 표시되었지만 데이터 파일에서는 여러 줄에 걸쳐 있을 수 없습니다. 반드시 한 줄에 모두 표시되어야 합니다.

{
"type": "emoji",
"emoji": {
  "name": "custom-emoji-troll",
  "image": "bulkdata/emoji/trollolol.png"
  }
}

필드의 Emoji 객체

필드 이름 타입 설명 유효성 검사 의무 여부
name 문자열 이모지 이름입니다.
image 문자열 이 이모지에 대한 이미지 파일의 경로(절대 경로 또는 현재 작업 디렉터리를 기준으로 한 상대 경로)입니다. 아니오

팀 객체

만약 존재한다면, Team 객체는 반드시 Version 객체 이후 및 어떤 Channel 객체보다도 앞에 나와야 합니다.

팀 오브젝트 예시

명확성을 위해 객체는 일반적인 JSON 형식을 사용하여 표시되었지만 데이터 파일에서는 여러 줄에 걸쳐 있을 수 없습니다. 반드시 한 줄에 모두 표시되어야 합니다.

{
"type": "team",
"team": {
  "name": "team-name",
  "display_name": "Team Display Name",
  "type": "O",
  "description": "The Team Description",
  "allow_open_invite": true
  }
}

필드의 팀 객체

[1] 유효성 검사되지 않았지만 적용 모드에서 실행 중이면 해당 스키마가 없으면 오류가 발생합니다.
필드 이름 타입 설명 유효성 검사 의무 여부
name 문자열 팀 이름입니다.
display_name 문자열 팀에 대한 표시 이름입니다.
type 문자열 팀의 종류입니다. 다음 값 중 하나를 가질 수 있습니다:
O - 공개 팀
I - 초대 전용 팀.
description 문자열 팀 설명입니다. 아니오
allow_open_invite 부울 공개 초대를 허용할지 여부입니다. 다음 값 중 하나를 가져야 합니다:
true
false
아니오
scheme 문자열 이 팀에 적용되어야 하는 스키마의 이름입니다. 아니오 [1] 아니오

채널 개체

Channel 객체가 존재하는 경우, 해당 객체는 모든 Team 객체 이후에 나타나고 모든 User 객체 이전에 나타나야 합니다.

예시 Channel 객체

가독성을 위해 객체는 일반적인 JSON 형식을 사용하여 표시되었지만 데이터 파일에서는 여러 줄에 걸쳐 나눌 수 없습니다. 모두 한 줄에 있어야 합니다.

{
  "type": "channel",
  "channel": {
    "team": "team-name",
    "name": "channel-name",
    "display_name": "Channel Name",
    "type": "O",
    "header": "The Channel Header",
    "purpose": "The Channel Purpose",
  }

채널 오브젝트의 필드

[1] 확인되지 않았으나, 적용 모드에서 해당 팀/스키마가 없으면 오류가 발생합니다.
필드명 타입 설명 확인됨 의무
team string 이 채널이 속한 팀의 이름입니다. No [1] Yes
name string 채널의 이름입니다. 소문자 ([a-z0-9]), -, 또는 _만 시작하고 포함해야 합니다. Yes Yes
display_name string 채널의 표시 이름입니다. Yes Yes
type string 채널의 유형입니다. 다음 값 중 하나를 가질 수 있습니다:
O - 공개 채널.
P - 비공개 채널.
Yes Yes
header string 채널 헤더입니다. Yes No
purpose string 채널 목적입니다. Yes No
scheme string 이 팀에 적용되어야 하는 스키마의 이름입니다. No [1] No

User 객체

만약 존재한다면, User 객체는 파일 내의 Team 및 Channel 객체 이후에 나와야 하며 어떤 Post 객체보다도 앞에 나와야 합니다.

예시 User 객체

명확성을 위해 객체는 일반적인 JSON 형식을 사용하여 표시되었지만 데이터 파일에서는 여러 줄에 걸쳐 있을 수 없습니다. 반드시 한 줄에 모두 표시되어야 합니다.

{
  "type": "user",
  "user": {
    "profile_image": "profile-picture.png",
    "username": "username",
    "email": "email@example.com",
    "auth_service": "",
    "password": "passw0rd",
    "nickname": "bobuser",
    "first_name": "Bob",
    "last_name": "User",
    "position": "Senior Developer",
    "roles": "system_user",
    "locale": "pt_BR",
    "teams": [
      {
        "name": "team-name",
        "theme": "{
            \"awayIndicator\":\"#DBBD4E\",
            \"buttonBg\":\"#23A1FF\",
            \"buttonColor\":\"#FFFFFF\",
            \"centerChannelBg\":\"#ffffff\",
            \"centerChannelColor\":\"#333333\",
            \"codeTheme\":\"github\",
            \"linkColor\":\"#2389d7\",
            \"mentionBg\":\"#2389d7\",
            \"mentionColor\":\"#ffffff\",
            \"mentionHighlightBg\":\"#fff2bb\",
            \"mentionHighlightLink\":\"#2f81b7\",
            \"newMessageSeparator\":\"#FF8800\",
            \"onlineIndicator\":\"#7DBE00\",
            \"sidebarBg\":\"#fafafa\",
            \"sidebarHeaderBg\":\"#3481B9\",
            \"sidebarHeaderTextColor\":\"#ffffff\",
            \"sidebarText\":\"#333333\",
            \"sidebarTextActiveBorder\":\"#378FD2\",
            \"sidebarTextActiveColor\":\"#111111\",
            \"sidebarTextHoverBg\":\"#e6f2fa\",
            \"sidebarUnreadText\":\"#333333\",
            }",
        "roles": "team_user team_admin",
        "channels": [
          {
            "name": "channel-name",
            "roles": "channel_user",
            "notify_props": {
              "desktop": "default",
              "mark_unread": "all"
            }
          }
        ]
      }
    ]
  }
}

User 객체의 필드

필드 이름 타입 설명 유효성 검사 의무 여부
profile_image 문자열 사용자의 프로필 이미지입니다. 기존 파일 경로여야 합니다. 아니오
username 문자열 사용자의 사용자 이름입니다. 이는 사용자를 고유하게 식별하는 식별자입니다.
email 문자열 사용자의 이메일 주소입니다.
auth_service 문자열 이 사용자 계정에 사용할 인증 서비스입니다. 제공되지 않으면 기본적으로 암호 기반 인증으로 설정됩니다. 다음 값 중 하나여야 합니다:
"" 또는 제공되지 않음 - 암호 인증.
"gitlab" - GitLab 인증.
"ldap" - LDAP 인증 (Enterprise 및 Professional)
"saml" - 일반 SAML 기반 인증 (Enterprise)
"google" - Google OAuth 인증 (Enterprise)
"office365" - Microsoft Office 365 OAuth 인증 (Enterprise)
아니오 아니오
auth_data 문자열 auth_service가 사용될 경우 인증 데이터입니다. 값은 지정된 auth_service에 따라 다릅니다.
데이터는 다음과 같은 필드에서 나옵니다:
"" 또는 제공되지 않음 - 생략해야 함.
"gitlab" - Gitlab auth 데이터에서 제공된 Id 속성의 값.
"ldap" - Mattermost LDAP 구성에서 "ID 속성"으로 지정된 LDAP 속성의 값.
"saml" - SAML 이메일 주소 속성의 값.
"google" - OAuth Id 속성의 값.
"office365" - OAuth Id 속성의 값.
아니오 아니오
password 문자열 사용자의 암호입니다. 암호 기반 인증을 사용할 때만 사용할 수 있습니다. 암호 기반 인증을 사용하고 암호가 제공되지 않은 경우 대량 로더에서 암호를 생성합니다. 아니오

UserNotifyProps 오브젝트의 필드

이 오브젝트는 사용자 오브젝트의 일부입니다.

[1] 확인되지 않았지만 적용 모드에서 해당 팀이 없을 경우 오류가 발생합니다.
필드명 타입 설명 확인됨 의무
desktop string 데스크톱 알림 보내기 선호도입니다. 다음 값 중 하나여야 합니다:
"all" - 모든 활동에 대해
"mention" - 멘션에 대해서만
"none" - 전혀
Yes No
desktop_sound string 데스크톱 알림 사운드 재생 여부 선호도입니다. 다음 값 중 하나여야 합니다:
"true" - 사운드 재생
"false" - 사운드 재생 안 함
Yes No
email string 이메일 알림 선호도입니다. 다음 값 중 하나여야 합니다:
"true" - 이메일 알림은 email_interval 설정에 기반하여 전송됩니다.
"false" - 이메일 알림은 전송되지 않습니다.
No No
mobile string 모바일 푸시 알림 보내기 선호도입니다. 다음 값 중 하나여야 합니다:
"all" - 모든 활동에 대해
"mention" - 멘션에 대해서만
"none" - 전혀
Yes No
mobile_push_status string 푸시 알림이 트리거되는 경우의 선호도입니다. 다음 값 중 하나여야 합니다:
"online" - 온라인, 자리 비움 또는 오프라인일 때
"away" - 자리 비움 또는 오프라인일 때
"offline" - 오프라인일 때
Yes No
channel string @all, @channel 및 @here이 멘션을 트리거하는지 여부입니다. 다음 값 중 하나여야 합니다:
"true" - 멘션을 트리거함
"false" - 멘션을 트리거하지 않음
Yes No
comments string 답장 멘션 알림에 대한 선호도입니다. 다음 값 중 하나여야 합니다:
"any" - 사용자가 시작하거나 참여한 답장 스레드의 메시지에 대한 알림을 트리거함
"root" - 사용자가 시작한 스레드의 메시지에 대한 알림을 트리거함
"never" - 사용자가 언급된 경우를 제외하고 답장 스레드의 메시지에 대한 알림을 트리거하지 않음
Yes No
mention_keys string 사용자 지정 대소문자 구분되지 않는 단어로 멘션을 트리거하는 선호도입니다. 단어는 쉼표로 구분되어야 합니다. No No

UserTeamMembership 객체의 필드

이 객체는 User 객체의 멤버입니다.

[1] 확인되지 않았으나, 적용 모드에서 해당 팀이 존재하지 않으면 오류가 발생합니다.
필드명 타입 설명 확인됨 의무
name string 이 사용자가 속해야 하는 팀의 이름입니다. No [1] Yes
theme string 지정된 팀에 대한 사용자의 테마입니다. Mattermost 테마 문자열 형식입니다. Yes No
roles string 사용자가 팀 내에서 가져야 할 역할입니다. 다음 값 중 하나여야 합니다:
"team_user"
"team_admin team_user"
Yes No
channels array 사용자가 팀 내에서 멤버가 되어야 하는 채널입니다. UserChannelMembership 객체의 배열이어야 합니다. Yes No

UserChannelMembership 객체의 필드

이 객체는 TeamMembership 객체의 멤버입니다.

[1] 확인되지 않았지만 적용 모드에서 해당 채널이 없을 경우 오류가 발생합니다.
필드명 타입 설명 확인됨 의무
name string 이 사용자가 속해야 할 부모 팀의 채널 이름입니다. No [1] Yes
roles string 이 채널 내에서 사용자가 가져야 할 역할입니다. 다음 값 중 하나여야 합니다:
"channel_user"
"channel_user channel_admin"
Yes No
notify_props object 이 채널에서 이 사용자의 알림 선호도입니다. ChannelNotifyProps 객체여야 합니다. Yes No
favorite boolean 채널을 즐겨찾기에 추가할지 여부입니다. 다음 값 중 하나여야 합니다:
"true" - 예
"false" - 아니요
No No

ChannelNotifyProps 객체의 필드

이 객체는 ChannelMembership 객체의 멤버입니다.

필드명 타입 설명 확인됨 의무
desktop string 데스크톱 알림 보내기 선호도입니다. 다음 값 중 하나여야 합니다:
"default" - 전역 기본값
"all" - 모든 활동에 대해
"mention" - 멘션에 대해서만
"none" - 전혀
Yes No
mobile string 모바일 알림 보내기 선호도입니다. 다음 값 중 하나여야 합니다:
"default" - 전역 기본값
"all" - 모든 활동에 대해
"mention" - 멘션에 대해서만
"none" - 전혀
Yes No
mark_unread string 채널을 읽지 않은 상태로 표시하는 선호도입니다. 다음 값 중 하나여야 합니다:
"all" - 모든 읽지 않은 메시지에 대해
"mention" - 멘션에 대해서만
Yes No

Post 객체

만약 존재한다면, Post 객체는 파일에서 마지막 User 객체 뒤에 나와야 하며, 어떤 DirectChannel 객체보다도 앞에 나와야 합니다.

예시 Post 객체

명확성을 위해 객체는 일반적인 JSON 형식을 사용하여 표시되었지만 데이터 파일에서는 여러 줄에 걸쳐 있을 수 없습니다. 반드시 한 줄에 모두 있어야 합니다.

{
  "type": "post",
  "post": {
    "team": "팀명",
    "channel": "채널명",
    "user": "사용자명",
    "message": "게시물 메시지",
    "props": {
      "attachments": [{
        "pretext": "이것은 첨부 파일 전조입니다.",
        "text": "이것은 첨부 파일 텍스트입니다."
      }]
    },
    "create_at": 140012340013,
    "flagged_by": [
      "사용자명1",
      "사용자명2",
      "사용자명3"
    ],
    "replies": [{
      "user": "사용자명4",
      "message": "답장 메시지",
      "create_at": 140012352049,
      "attachments": [{
          "path": "/some/valid/file/path/1"
      }],
    }, {
      "user": "사용자명5",
      "message": "다른 답장 메시지",
      "create_at": 140012353057,
    }],
    "reactions": [{
      "user": "사용자명6",
      "emoji_name": "+1",
      "create_at": 140012356032,
    }, {
      "user": "사용자명7",
      "emoji_name": "하트",
      "create_at": 140012359034,
    }],
    "attachments": [{
      "path": "/some/valid/file/path/1"
    }, {
      "path": "/some/valid/file/path/2"
    }]
  }
}

Post 객체의 필드

[1] 확인되지 않았지만 적용 모드에서 팀이 없을 경우 오류가 발생합니다.
[2] 확인되지 않았지만 적용 모드에서 해당 팀에 채널이 없을 경우 오류가 발생합니다.
[3] 확인되지 않았지만 적용 모드에서 사용자가 없을 경우 오류가 발생합니다.
필드명 타입 설명 확인됨 의무
team string 이 게시물이 속한 팀의 이름입니다. No [1] Yes
channel string 이 게시물이 속한 채널의 이름입니다. No [2] Yes
user string 이 게시물의 사용자명입니다. No [3] Yes
message string 게시물에 포함된 메시지입니다. Yes Yes
props object 게시물의 프로퍼티입니다. 통합 및 봇 게시물에서 사용되는 추가 서식 정보를 포함합니다. 자세한 설명은 메시지 첨부 파일 문서를 참조하십시오. Yes Yes
create_at int 게시물의 타임스탬프, Unix 에포크 이후 밀리초 단위입니다. Yes Yes
flagged_by array 게시물을 신고한 회원 목록이어야 합니다. No No
replies array 이 게시물에 대한 답장 게시물입니다. 반드시 Reply

답변 객체의 필드

이 객체는 게시물/직접 게시물 객체의 멤버입니다.

필드명 타입 설명 확인됨 의무
user string 이 답장에 대한 사용자의 사용자명입니다. No [3] Yes
message string 답장에 포함된 메시지입니다. Yes Yes
create_at int 답장의 타임스탬프, Unix 에포크 이후 밀리초 단위입니다. Yes Yes
flagged_by array 게시물을 신고한 회원 목록이어야 합니다. No No
reactions array 이 게시물에 대한 이모지 반응입니다. Reaction 객체의 배열이어야 합니다. Yes No
attachments array 이 게시물에 대한 파일 첨부입니다. Attachment 객체의 배열이어야 합니다. Yes No

Reaction 객체의 필드

이 객체는 Post/DirectPost 객체의 구성원입니다.

필드명 타입 설명 확인됨 의무
user string 이 답장에 대한 사용자의 사용자명입니다. No [3] Yes
emoji_name string 반응의 이모지입니다. Yes Yes
create_at int 답장의 타임스탬프, Unix 에포크 이후 밀리초 단위입니다. Yes Yes

Attachment 객체의 필드

이 객체는 Post/DirectPost 객체의 구성원입니다.

[1] 확인되지 않았지만 적용 모드에서 파일 경로를 찾거나 액세스할 수 없는 경우 오류가 발생합니다.
필드명 타입 설명 확인됨 의무
path string 게시물에 첨부할 파일의 경로입니다. No [1] Yes

DirectChannel 객체

직접 채널은 채널의 구성원으로 두 명에서 여덟 명까지의 사용자를 가질 수 있습니다. 구성원이 두 명뿐이면 Mattermost는 이를 다이렉트 메시지 채널로 취급합니다. 세 명 이상의 구성원이 있는 경우 Mattermost는 그룹 메시지 채널로 취급합니다.

예시 DirectChannel 객체

명확성을 위해 객체는 일반적인 JSON 형식을 사용하여 표시되었지만 데이터 파일에서는 여러 줄에 걸쳐 있을 수 없습니다. 반드시 한 줄에 모두 있어야 합니다.

{
  "type": "direct_channel",
  "direct_channel": {
    "members": [
      "사용자명1",
      "사용자명2",
      "사용자명3"
    ],
    "header": "채널 헤더",
    "favorited_by": [
      "사용자명1",
      "사용자명2",
      "사용자명3"
    ]
  }
}

DirectChannel 객체의 필드

[1] 확인되지 않았지만 적용 모드에서 한 명 이상의 사용자가 존재하지 않을 경우 오류가 발생합니다.
필드명 타입 설명 확인됨 의무
members array 최소 두 사용자명과 최대 여덟 사용자명을 포함해야 합니다. No [1] Yes
header string 채널 헤더입니다. Yes No
favorited_by array 채널을 즐겨찾기한 회원 목록이어야 합니다. No No

DirectPost object

다른 객체들 후에 DirectPost 객체가 나와야 합니다.

DirectPost 객체의 예

명확한 이해를 위해, 해당 객체는 일반적인 JSON 형식을 사용하여 표시되었지만, 데이터 파일에서 여러 줄에 걸쳐 펼쳐지지 않아야 합니다. 한 줄에 모두 있어야 합니다.

{
  "type": "direct_post",
  "direct_post": {
    "channel_members": [
      "username1",
      "username2",
      "username3",
    ],
    "user": "username2",
    "message": "Hello Group Channel",
    "create_at": 140012340013,
    "flagged_by": [
      "username1",
      "username2",
      "username3"
    ],
    "replies": [{
      "user": "username4",
      "message": "The reply message",
      "create_at": 140012352049,
    }, {
      "user": "username5",
      "message": "Other reply message",
      "create_at": 140012353057,
    }],
    "reactions": [{
      "user": "username6",
      "emoji_name": "+1",
      "create_at": 140012356032,
    }, {
      "user": "username7",
      "emoji_name": "heart",
      "create_at": 140012359034,
    }]
  }
}

DirectPost 객체의 필드

[1] 검증되지 않았지만, 적용 모드에서 동일한 목록이 포함된 채널이 없으면 오류가 발생합니다.
[2] 검증되지 않았지만, 적용 모드에서 사용자가 존재하지 않으면 오류가 발생합니다.
필드 이름 타입 설명 검증됨 필수
channel_members array 최소 두 개의 사용자명 및 최대 여덟 개의 사용자명이 포함된 멤버 목록이어야 합니다. 아니오 [1]
user string 이 게시물에 대한 사용자의 사용자명입니다. 아니오 [2]
message string 게시물이 포함하는 메시지입니다.
create_at int 게시물의 타임스탬프로, 유닉스 에포크 이후 밀리초 단위입니다.
flagged_by array 게시물에 깃발 표시한 회원 목록이어야 합니다. 아니오 아니오
replies array 이 게시물에 대한 응답 게시물의 배열이어야 합니다. Reply 객체의 배열이어야 합니다. 아니오
reactions array 이 게시물에 대한 이모지 반응의 배열이어야 합니다. Reaction 객체의 배열이어야 합니다. 아니오
attachments array 이 게시물에 대한 첨부 파일의 배열이어야 합니다. Attachment 객체의 배열이어야 합니다. 아니오

문제 해결

대량로딩 도구 실행이 멈추고 완료되지 않음

Bleve 검색 인덱싱이 활성화된 경우 시스템 콘솔 > 실험 > Bleve 에서 일시적으로 비활성화하고 명령을 다시 실행하십시오.

Bleve는 여러 프로세스가 동일한 인덱스를 여는 것을 지원하지 않습니다. 따라서 Mattermost 서버가 실행 중인 경우 대량로딩 도구를 실행하려고 하면 인덱스를 열 때 잠길 것입니다.

Bleve 검색 인덱싱을 사용하지 않는 경우, 도움이 필요하면 문제 해결 포럼 에 게시해 주세요.