Panduan ini ditujukan untuk administrator konektor CSV (nilai yang dipisahkan koma) Google Cloud Search yang bertanggung jawab untuk mendownload, mengonfigurasi, menjalankan, dan memantau konektor.
Panduan ini mencakup petunjuk untuk tugas-tugas utama berikut:
- Download software konektor CSV Cloud Search.
- Mengonfigurasi konektor untuk sumber data CSV tertentu.
- Deploy dan jalankan konektor.
Untuk memahami konsep dalam dokumen ini, Anda harus memahami Google Workspace, file CSV, dan Daftar Kontrol Akses (ACL).
Ringkasan konektor CSV Cloud Search
Konektor CSV Cloud Search berfungsi dengan file teks nilai yang dipisahkan koma (CSV). File CSV menyimpan data dalam bentuk tabel, dengan setiap baris merupakan record data.
Konektor mengekstrak baris dari file CSV dan mengindeksnya ke Cloud Search menggunakan Indexing API. Setelah diindeks, baris dapat ditelusuri melalui klien Cloud Search atau Query API. Konektor juga mendukung ACL untuk mengontrol akses pengguna ke konten.
Anda dapat menginstal konektor di Linux atau Windows. Sebelum deployment, pastikan Anda memiliki komponen berikut:
- Java JRE 1.8 yang diinstal di komputer yang menjalankan konektor.
- Informasi Google Workspace untuk membuat koneksi:
- Kunci pribadi Google Workspace (yang berisi ID akun layanan).
- ID sumber data Google Workspace.
Biasanya, administrator Google Workspace untuk domain menyediakan kredensial ini.
Langkah-langkah penerapan
Ikuti langkah-langkah berikut untuk men-deploy konektor CSV Cloud Search:
- Instal software konektor
- Tentukan konfigurasi konektor
- Mengonfigurasi akses ke sumber data Cloud Search
- Mengonfigurasi akses file CSV
- Tentukan nama kolom, kunci unik, dan kolom tanggal dan waktu
- Menentukan kolom untuk URL hasil penelusuran yang dapat diklik
- Menentukan metadata dan format kolom
- Menjadwalkan traversal data
- Menentukan opsi ACL
1. Instal SDK
Instal SDK ke repositori Maven lokal Anda.
Buat clone repositori SDK dari GitHub.
$ git clone https://github.com/google-cloudsearch/connector-sdk.git $ cd connector-sdk/csv
Lihat versi yang Anda pilih:
$ git checkout tags/v1-0.0.3
Buat konektor:
$ mvn package
Ekstrak dan instal konektor:
$ cp target/google-cloudsearch-csv-connector-v1-0.0.3.zip installation-dir $ cd installation-dir $ unzip google-cloudsearch-csv-connector-v1-0.0.3.zip $ cd google-cloudsearch-csv-connector-v1-0.0.3
2. Tentukan konfigurasi konektor CSV
Anda dapat mengontrol perilaku konektor melalui parameter dalam file konfigurasinya. Parameter yang dapat dikonfigurasi meliputi:
- Akses sumber data.
- Lokasi dan definisi file CSV.
- Kolom ID unik.
- Opsi traversal dan ACL.
Untuk membuat file konfigurasi:
- Buka editor teks dan beri nama file
connector-config.properties. - Tambahkan parameter konfigurasi sebagai pasangan
key=value, dengan setiap pasangan berada di baris baru. Untuk contoh file konfigurasi, lihat Contoh file konfigurasi.
Simpan file konfigurasi di direktori yang sama dengan konektor agar pelacakan lebih mudah. Untuk memastikan konektor mengenali file Anda, tentukan lokasinya di command line. Jika tidak, konektor akan menggunakan
connector-config.properties di direktori lokal Anda. Lihat
Menjalankan konektor.
3. Mengonfigurasi akses ke sumber data Cloud Search
File konfigurasi harus menentukan parameter untuk mengakses sumber data Cloud Search. Anda memerlukan ID Sumber data, ID akun layanan, dan lokasi ke file kunci pribadi akun layanan.
| Setelan | Parameter |
| ID sumber data | api.sourceId=1234567890abcdef
Wajib. ID sumber Cloud Search yang disiapkan oleh administrator Google Workspace. |
| Jalur ke kunci pribadi akun layanan | api.serviceAccountPrivateKeyFile=./PrivateKey.json
Wajib. File kunci akun layanan untuk aksesibilitas konektor. |
| ID sumber identitas | api.identitySourceId=x0987654321
Diperlukan jika menggunakan pengguna dan grup eksternal. ID sumber identitas yang disiapkan oleh administrator Google Workspace. |
4. Mengonfigurasi parameter file CSV
Identifikasi jalur, format, dan encoding file.
| Setelan | Parameter |
| Jalur ke file CSV | csv.filePath=./movie_content.csv
Wajib. Jalur ke file untuk pengindeksan. |
| Format file | csv.format=DEFAULT
Format file. Nilai yang mungkin berasal dari class CSVFormat Apache Commons CSV. Nilai format mencakup: |
| Pengubah format file | csv.format.withMethod=value
Modifikasi cara Cloud Search menangani file. Kemungkinan metode berasal dari class CSVFormat Apache Commons CSV dan mencakup metode yang menggunakan satu karakter, string, atau nilai boolean. Misalnya, untuk menentukan titik koma sebagai pembatas, gunakan |
| Jenis encoding file | csv.fileEncoding=UTF-8
Himpunan karakter Java yang akan digunakan. Default-nya adalah set karakter platform. |
5. Tentukan nama kolom yang akan diindeks dan kolom kunci unik
Berikan informasi kolom dalam file konfigurasi.
| Setelan | Parameter |
| Kolom yang akan diindeks | csv.csvColumns=movieId,movieTitle,description,actors,releaseDate,year,userratings...
Nama kolom yang akan diindeks dari file CSV. Secara default, baris pertama CSV digunakan sebagai header. Jika |
| Kolom kunci unik | csv.uniqueKeyColumns=movieId
Kolom yang digunakan untuk membuat ID unik. Setelan default-nya adalah kode hash record. |
6. Menentukan kolom untuk URL hasil penelusuran yang dapat diklik
Aktifkan URL yang dapat diklik untuk hasil penelusuran.
| Setelan | Parameter |
| Format URL hasil penelusuran | url.format=https://mymoviesite.com/movies/{0}
Wajib. Format yang digunakan untuk membuat URL tampilan. |
| Parameter URL | url.columns=movieId
Wajib. Nama kolom CSV yang nilainya akan digunakan untuk membuat URL tampilan record. |
| Parameter URL hasil penelusuran yang akan dikecualikan | url.columnsToEscape=movieId
Opsional. Nama kolom CSV yang nilainya akan menjadi URL, yang dikecualikan untuk membuat URL tampilan yang valid. |
7. Tentukan metadata, format kolom, dan kualitas penelusuran
Anda dapat menambahkan parameter ke file konfigurasi yang menentukan:
Parameter konfigurasi metadata
Parameter ini menjelaskan kolom untuk mengisi metadata item.
| Setelan | Parameter |
| Judul | itemMetadata.title.field=movieTitle
itemMetadata.title.defaultValue=Gone with the Wind
Atribut metadata untuk judul dokumen. Defaultnya adalah string kosong. |
| URL | itemMetadata.sourceRepositoryUrl.field=url
itemMetadata.sourceRepositoryUrl.defaultValue=https://www.imdb.com/title/tt0031381/
Atribut metadata untuk URL dokumen dalam hasil penelusuran. |
| Stempel waktu pembuatan | itemMetadata.createTime.field=releaseDate
itemMetadata.createTime.defaultValue=1940-01-17
Atribut metadata untuk stempel waktu pembuatan dokumen. |
| Waktu terakhir diubah | itemMetadata.updateTime.field=releaseDate
itemMetadata.updateTime.defaultValue=1940-01-17
Atribut metadata untuk stempel waktu modifikasi terakhir dokumen. |
| Bahasa dokumen | itemMetadata.contentLanguage.field=languageCode
itemMetadata.contentLanguage.defaultValue=en-US
Bahasa konten dokumen yang diindeks. |
| Jenis objek skema | itemMetadata.objectType.field=typeitemMetadata.objectType.defaultValue=movie
Jenis objek yang digunakan oleh konektor, seperti yang dijelaskan dalam skema. Konektor tidak akan mengindeks data terstruktur apa pun jika properti ini tidak ditentukan. |
Format tanggal dan waktu
Parameter ini menentukan format tanggal dan waktu tambahan untuk mengurai nilai string ke dalam kolom tanggal atau tanggal-waktu.
| Setelan | Parameter |
| Format datetime tambahan | structuredData.dateTimePatterns=MM/dd/uuuu HH:mm:ssXXX
Daftar pola java.time.format.DateTimeFormatter tambahan yang dipisahkan titik koma. Pola digunakan saat mengurai nilai string untuk kolom tanggal atau tanggal-waktu pada metadata atau skema. Nilai defaultnya adalah daftar kosong, tetapi format RFC 3339 dan RFC 1123 selalu didukung.
|
Format kolom
Parameter ini menentukan cara mem-parsing kolom dalam file CSV.
| Setelan | Parameter |
| Lewati header | csv.skipHeaderRecord=true
Abaikan baris pertama. Defaultnya adalah false. |
| Kolom banyak nilai | csv.multiValueColumns=genre,actors
Nama kolom dengan beberapa nilai. |
| Pemisah untuk kolom banyak nilai | csv.multiValue.genre=;
Pemisah untuk kolom banyak nilai. Pemisah defaultnya adalah koma. |
Kualitas penelusuran
Konektor menggunakan template konten untuk memformat data. Kolom judul memiliki prioritas tertinggi. Anda dapat menetapkan tingkat prioritas (tinggi, sedang, rendah) ke kolom lainnya.
| Setelan | Parameter |
| Judul konten |
contentTemplate.csv.title=movieTitle
Judul konten adalah kolom dengan kualitas penelusuran tertinggi. |
| Kualitas penelusuran tinggi untuk kolom konten |
contentTemplate.csv.quality.high=actors
Kolom konten dengan nilai kualitas penelusuran tinggi. Defaultnya adalah string kosong. |
| Kualitas penelusuran rendah untuk kolom konten |
contentTemplate.csv.quality.low=genre
Kolom konten dengan nilai kualitas penelusuran rendah. Defaultnya adalah string kosong. |
| Kualitas penelusuran sedang untuk kolom konten |
contentTemplate.csv.quality.medium=description
Kolom konten dengan nilai kualitas penelusuran sedang. Defaultnya adalah string kosong. |
| Kolom konten yang tidak ditentukan |
contentTemplate.csv.unmappedColumnsMode=IGNORE
Cara konektor menangani kolom konten yang tidak ditentukan. Nilai yang valid adalah:
Nilai defaultnya adalah APPEND. |
8. Jadwalkan traversal data
Traversal adalah proses penemuan konten. Konektor melintasi baris CSV dan mengindeksnya menggunakan Indexing API. Konektor CSV hanya menjalankan traversal penuh.
| Setelan | Parameter |
| Interval traversal | schedule.traversalIntervalSecs=7200
Interval antara traversal penuh dalam hitungan detik. Defaultnya adalah 86400 (satu hari). |
| Traversal saat startup | schedule.performTraversalOnStart=false
Konektor menjalankan traversal saat konektor dimulai, bukan menunggu interval pertama berakhir. Default-nya adalah |
9. Menentukan opsi ACL
Konektor menggunakan ACL untuk mengontrol akses. Jika repositori Anda menyediakan ACL, upload ACL tersebut. Jika tidak, konfigurasikan ACL default. Tetapkan defaultAcl.mode ke nilai selain none.
| Setelan | Parameter |
| Mode ACL | defaultAcl.mode=fallback
Wajib. Konektor hanya mendukung mode penggantian. |
| Nama ACL default | defaultAcl.name=VIRTUAL_CONTAINER_FOR_CONNECTOR_1
Opsional. Mengganti nama container virtual yang digunakan oleh konektor untuk ACL default. Nilai default-nya adalah |
| ACL publik default | defaultAcl.public=true
Menetapkan seluruh repositori ke akses domain publik. Default-nya adalah false. |
| Pembaca grup ACL umum | defaultAcl.readers.groups=google:group1, group2
|
| Pembaca ACL umum | defaultAcl.readers.users=user1, user2, google:user3
|
| ACL umum menolak pembaca grup | defaultAcl.denied.groups=group3
|
| ACL umum menolak pembaca | defaultAcl.denied.users=user4, user5
|
| Seluruh akses domain | Untuk menentukan apakah setiap record yang diindeks dapat diakses secara publik oleh setiap pengguna dalam domain, tetapkan kedua opsi berikut dengan nilai:
|
| ACL yang ditetapkan umum | Untuk menentukan ACL umum untuk setiap record, tetapkan parameter berikut:
Pengguna dan grup dianggap sebagai pengguna/grup yang ditentukan domain lokal, kecuali diawali dengan " Pengguna atau grup defaultnya adalah string kosong. Berikan opsi pengguna dan grup
hanya jika Jika |
Definisi skema
Untuk mendukung kueri data terstruktur, siapkan skema untuk sumber data Anda.
Misalnya, pertimbangkan file CSV dengan informasi berikut tentang film:
- movieId
- movieTitle
- description
- year
- releaseDate
- actors (beberapa nilai yang dipisahkan koma (,))
- genre (beberapa nilai)
- peringkat
Berdasarkan struktur ini, Anda dapat menentukan skema berikut untuk sumber data:
{
"objectDefinitions": [
{
"name": "movie",
"propertyDefinitions": [
{
"name": "actors",
"isReturnable": true,
"isRepeatable": true,
"isFacetable": true,
"textPropertyOptions": {
"operatorOptions": {
"operatorName": "actor"
}
}
},
{
"name": "releaseDate",
"isReturnable": true,
"isRepeatable": false,
"isFacetable": false,
"datePropertyOptions": {
"operatorOptions": {
"operatorName": "released",
"lessThanOperatorName": "releasedbefore",
"greaterThanOperatorName": "releasedafter"
}
}
},
{
"name": "movieTitle",
"isReturnable": true,
"isRepeatable": false,
"isFacetable": false,
"textPropertyOptions": {
"retrievalImportance": {
"importance": "HIGHEST"
},
"operatorOptions": {
"operatorName": "title"
}
}
},
{
"name": "genre",
"isReturnable": true,
"isRepeatable": true,
"isFacetable": true,
"enumPropertyOptions": {
"operatorOptions": {
"operatorName": "genre"
},
"possibleValues": [
{
"stringValue": "Action"
},
{
"stringValue": "Documentary"
},
{
"stringValue": "Drama"
},
{
"stringValue": "Crime"
},
{
"stringValue": "Sci-fi"
}
]
}
},
{
"name": "userRating",
"isReturnable": true,
"isRepeatable": false,
"isFacetable": true,
"integerPropertyOptions": {
"orderedRanking": "ASCENDING",
"maximumValue": "10",
"operatorOptions": {
"operatorName": "score",
"lessThanOperatorName": "scorebelow",
"greaterThanOperatorName": "scoreabove"
}
}
}
]
}
]
}
Contoh file konfigurasi
Contoh file konfigurasi berikut menunjukkan pasangan parameter key=value yang menentukan contoh perilaku konektor.
# data source access
api.sourceId=1234567890abcd
api.serviceAccountPrivateKeyFile=./PrivateKey.json
# CSV data structure
csv.filePath=./movie_content.csv
csv.csvColumns=movieId,movieTitle,description,releaseYear,genre,actors,ratings,releaseDate
csv.skipHeaderRecord=true
url.format=https://mymoviesite.com/movies/{0}
url.columns=movieId
csv.datetimeFormat.releaseDate=yyyy-mm-dd
csv.multiValueColumns=genre,actors
csv.multiValue.genre=;
contentTemplate.csv.title=movieTitle
# metadata structured data and content
itemMetadata.title.field=movieTitle
itemMetadata.createTime.field=releaseDate
itemMetadata.contentLanguage.defaultValue=en-US
itemMetadata.objectType.defaultValue=movie
contentTemplate.csv.quality.medium=description
contentTemplate.csv.unmappedColumnsMode=IGNORE
#ACLs
defaultAcl.mode=fallback
defaultAcl.public=true
Menjalankan konektor
Untuk menjalankan konektor dari command line:
$ java -jar google-cloudsearch-csv-connector-v1-0.0.3.jar -Dconfig=my.config
Secara default, log konektor tersedia pada output standar. Anda dapat membuat log ke file dengan menentukan logging.properties.