スキーマは OpenSearch アプリケーションのデータ構造を定義します。スキーマには、データの構成方法を記述する tables と、データの検索およびフィルター方法を制御する indexes という 2 つのトップレベルオブジェクトがあります。テーブル内の各フィールドは、検索またはフィルターとして使用する前に、スキーマに登録する必要があります。
例
{
"tables": {
"main": {
"primaryTable": true,
"name": "main",
"fields": {
"id": {
"name": "id",
"type": "LITERAL",
"primaryKey": true
},
"title": {
"name": "title",
"type": "TEXT",
"primaryKey": false
},
"buy": {
"name": "buy",
"type": "INT",
"primaryKey": false
},
"cate_id": {
"name": "cate_id",
"type": "INT",
"primaryKey": false
},
"cate_name": {
"name": "cate_name",
"type": "LITERAL",
"primaryKey": false
}
}
}
},
"indexes": {
"searchFields": {
"id": {
"fields": [
"id"
]
},
"default": {
"fields": [
"title"
],
"analyzer": "chn_standard"
},
"cate_name": {
"fields": [
"cate_name"
]
}
},
"filterFields": [
"id",
"buy",
"cate_id",
"cate_name"
]
}
}この例では、5 つのフィールドを持つ 1 つのテーブル (main) を定義しています。indexes オブジェクトは、これらのフィールドのうち 3 つを検索インデックスにマッピングし、4 つのフィールドをフィルター (属性) フィールドとしてリストアップしています。
構造
スキーマ
| フィールド | タイプ | 必須 | 説明 |
|---|---|---|---|
tables | オブジェクト | はい | テーブル定義。各キーはテーブル名です。各値の構造については、「テーブル」をご参照ください。 |
indexes | オブジェクト | はい | インデックス構成。詳細は、「インデックス」をご参照ください。 |
テーブル
例
{
"primaryTable": true,
"name": "main",
"fields": {
"id": {
"name": "id",
"type": "LITERAL",
"primaryKey": true
},
"title": {
"name": "title",
"type": "TEXT",
"primaryKey": false
}
}
}構造
| フィールド | タイプ | 必須 | 説明 |
|---|---|---|---|
name | 文字列 | はい | テーブルの名前。 |
primaryTable | ブール値 | はい | このテーブルがプライマリテーブルであるかどうかを指定します。 |
fields | オブジェクト | はい | フィールド定義。各キーはフィールド名です。各値の構造については、「フィールド」をご参照ください。 |
フィールド
例
{
"name": "json_nested",
"type": "NESTED",
"primaryKey": false,
"innerSchema": {
"job": {
"name": "job",
"type": "TEXT",
"primaryKey": false
},
"ssn": {
"name": "ssn",
"type": "LITERAL",
"primaryKey": false
}
}
}構造
| フィールド | タイプ | 必須 | 説明 |
|---|---|---|---|
name | 文字列 | はい | フィールドの名前。 |
type | 文字列 | はい | フィールドタイプは LITERAL、TEXT、INT、NESTED、または OBJECT です。詳細については、「アプリケーションスキーマ」をご参照ください。 |
primaryKey | ブール値 | はい | このフィールドがプライマリキーであるかどうかを指定します。 |
joinWith | 配列 | いいえ | このフィールドを、リンクされた外部データテーブルにリンクします。 |
innerSchema | オブジェクト | いいえ | ネストされたフィールドの構造。type が OBJECT または NESTED の場合に必須です。複数レベルのネストをサポートします。 |
インデックス
例
{
"searchFields": {
"default": {
"fields": [
"title"
],
"analyzer": "chn_standard"
},
"id": {
"fields": [
"id"
]
}
},
"filterFields": [
"id"
]
}構造
| フィールド | タイプ | 必須 | 説明 |
|---|---|---|---|
searchFields | オブジェクト | はい | 全文検索インデックスの定義。各キーはインデックス名です。各値の構造については、「SearchField」をご参照ください。 |
filterFields | 配列 | はい | 属性フィールドのリスト。 |
SearchField
例
{
"fields": ["title"],
"analyzer": "chn_standard"
}構造
| フィールド | タイプ | 必須 | 説明 |
|---|---|---|---|
fields | 配列 | はい | この検索インデックスに含まれるテーブルフィールド。 |
analyzer | 文字列 | いいえ | 適用するアナライザ。カスタムアナライザについては、「カスタムアナライザ」をご参照ください。組み込みアナライザについては、以下の「組み込みアナライザ」および「組み込みアナライザ」をご参照ください。 |
組み込みアナライザ
中国語
| アナライザ | 説明 |
|---|---|
chn_standard | 一般的な中国語分析。ほとんどの中国語全文検索フィールドに使用します。 |
chn_single | 単一文字の中国語分析。各文字を独立したトークンとして扱う場合に使用します。 |
chn_ecommerce | 中国語の e コマース分析。プロダクト名やショッピング関連のクエリに最適化されています。 |
chn_film | 中国語の動画およびエンターテインメント分析。映画のタイトルやメディアコンテンツに最適化されています。 |
chn_scene_name | 中国語の人名分析。 |
chn_scene_org | 中国語の組織名分析。 |
chn_it_content | 中国語テキスト向けの IT コンテンツ分析。 |
英語
| アナライザ | 説明 |
|---|---|
eng_standard | ステミング付きの英語分析。単語の活用形を一致させます (例:「running」は「run」に一致します)。 |
eng_nostem | ステミングなしの英語分析。単語の完全な形のみに一致します。 |
言語に依存しないアナライザと特殊用途のアナライザ
| アナライザ | 説明 |
|---|---|
simple | シンプルな分析。空白文字と句読点で分割し、トークンを小文字に変換します。 |
keyword | キーワード分析。フィールド値全体を単一のトークンとして扱います。完全一致検索のフィールドに使用します。 |
fuzzy | あいまい分析。トークンのバリエーションを生成し、近似一致をサポートします。 |
numeric | 数値分析。 |
geo | 地理位置情報分析。地理座標フィールドに使用します。 |
first_letter | シンプルなピンインスペル分析。各ピンイン音節の最初の文字をインデックス化します。 |
full_pinyin | 完全なピンインスペル分析。完全なピンイン表記をインデックス化します。 |