IBM Cloudant 照会の処理
IBM® Cloudant® for IBM Cloud® 照会は、IBM Cloudant データベースの 宣言 JSON 照会構文です。 json
または text
タイプの索引を IBM Cloudant で使用できます。
以下の場合には、json
タイプの照会にして索引の作成方法を指定できます。
- 検索するデータが正確にわかっている。
- ストレージと処理の所要量を最小限に抑える必要がある。
ただし、データを検索する際の柔軟性を最大にするには、通常、text
タイプの索引を作成します。 text
タイプの索引には、文書内のすべてのフィールドを自動的に索引付けするための単純なメカニズムがあります。
text
索引のほうが柔軟性が向上しますが、作成には時間がかかり、json
索引よりも多くのストレージ・リソースを必要とする場合があります。
索引の作成
以下のいずれかのタイプの索引を作成できます。
"type": "json"
"type": "text"
type=json
索引の作成
データベース $DATABASE
内に JSON 索引を作成するには、要求本文内の索引を記述する JSON オブジェクトを使用して、POST
に /$DATABASE/_index
要求を行います。 JSON オブジェクトの type
フィールドは json
に設定する必要があります。 JSON 索引は、パーティション化またはグローバルにすることができます。このオプションは、partitioned
フィールドを使用して設定します。
HTTP を使用して JSON
タイプの索引を要求する例を以下に示します。
POST /$DATABASE/_index HTTP/1.1
Content-Type: application/json
foo-partitioned-index
というフィールドの foo
というパーティション化索引を作成する JSON オブジェクトの例を以下に示します。
{
"index": {
"fields": ["foo"]
},
"name" : "foo-partitioned-index",
"type" : "json",
"partitioned": true
}
bar-global-index
というフィールドの bar
というグローバル索引を作成する JSON オブジェクトの例を以下に示します。
{
"index": {
"fields": ["bar"]
},
"name" : "bar-global-index",
"type" : "json",
"partitioned": false
}
返される JSON の例を以下に示します。索引が作成されたことを確認します。
{
"result": "created"
}
フィールド | 説明 |
---|---|
index |
fields - ソート構文を使用するフィールド名の JSON 配列。 ネストされたフィールドも使用できます (例: person.name )。 |
ddoc (オプション) |
索引が作成される設計文書の名前。 デフォルトでは、各索引は独自の設計文書内に作成されます。 効率性のために索引を設計文書にグループ化できます。 ただし、設計文書内の 1 つの索引を変更すると、同じ文書内の他のすべての索引が無効になります。 |
type (オプション) |
json または text を指定できます。 デフォルトは json です。 |
name (オプション) |
索引の名前。 名前を指定しない場合は、名前が自動的に生成されます。 |
partitioned (オプション、ブール値) |
この索引がパーティション化されているかどうかを判別します。 詳しくは、partitioned フィールドを参照してください。 |
partitioned
フィールド
このフィールドでは、作成する索引をパーティション化索引にするか、グローバル索引にするかを設定します。
値 | 説明 | 注記 |
---|---|---|
true |
索引をパーティション化索引として作成します。 | パーティション・データベースでのみ使用できます。 |
false |
索引をグローバル索引として作成します。 | どのデータベースでも使用できます。 |
デフォルトは、データベースの partitioned
設定に従います。
データベースはパーティション化されていますか? | デフォルトの partitioned 値 |
使用可能な値 |
---|---|---|
ある | true |
true , false |
いいえ | false |
false |
It's important to reiterate that the default partitioned
value is true
パーティショニングされたデータベースで作成されたインデックスの場合。 このデフォルト値は、グローバル照会を満たすために索引を使用できない ことを意味します。
コード | 説明 |
---|---|
200 | 索引が正常に作成されたか、データベースに存在しています。 |
400 | 間違った要求 - 要求本文のフォーマットが指定されていません。 |
type=text
索引の作成
単一のテキスト索引を作成する場合は、デフォルト値を使用することをお勧めしますが、一部の有用な索引属性は変更できます。
text
索引は、パーティション化またはグローバルにすることができます。このオプションは、partitioned
フィールドを使用して設定します。
フルテキスト索引 (FTI) の場合、type
を text
に設定する必要があります。
name
属性と ddoc
属性は、索引を設計文書にグループ化するためのものです。 カスタム・ストリング値を使用して索引グループを参照するには、これらの属性を使用します。 これらのフィールドに値が指定されていない場合は、ハッシュ値が自動的に取り込まれます。
同じ ddoc
値を持つ複数のテキスト索引をデータベースに作成する場合は、少なくとも ddoc
値と name
値を知っている必要があります。 同じ ddoc
値を持つ複数の索引を作成すると、それらは同じ設計文書に配置されます。 一般的には、各テキスト索引を独自の設計文書に入れる必要があります。
詳しくは
text
について 参照のこと。
パーティション化索引の作成を要求する JSON 文書の例を以下に示します。
{
"index": {
"fields": [
{
"name": "Movie_name",
"type": "string"
}
]
},
"name": "Movie_name-text",
"type": "text",
"partitioned": true
}
グローバル索引の作成を要求する JSON 文書の例を以下に示します。
{
"index": {
"fields": [
{
"name": "Movie_name",
"type": "string"
}
]
},
"name": "Movie_name-text",
"type": "text",
"partitioned": false
}
より複雑なパーティション化索引の作成を要求する JSON 文書の例を以下に示します。
{
"type": "text",
"name": "my-index",
"ddoc": "my-index-design-doc",
"index": {
"default_field": {
"enabled": true,
"analyzer": "german"
},
"selector": {},
"fields": [
{"name": "married", "type": "boolean"},
{"name": "lastname", "type": "string"},
{"name": "year-of-birth", "type": "number"}
]
},
"partitioned": true
}
index
フィールド
index
フィールドには、テキスト索引に固有の設定が含まれます。
すべての文書のすべてのフィールドに自動的に索引を付けるには、以下の単純な構文を使用します。
"index": {}
索引付けプロセスは、データベース内のすべての文書のすべてのフィールドを全検索します。
サンプル映画のデモデータベース では、データベース内のすべてのフィールドとすべてのドキュメントを含むテキストインデックスの例を見ることができます。
大規模なデータ・セットでは、すべての文書のすべてのフィールドに索引を付ける場合、リソースを消費するアクティビティーになる可能性があるため注意してください。
すべての文書内のすべてのフィールドの索引の作成を要求する JSON 文書の例を以下に示します。
{
"type": "text",
"index": { }
}
default_field
フィールド
default_field
値では、$text
演算子を索引で使用する方法を指定します。
default_field
には、以下の 2 つのキーがあります。
キー | 説明 |
---|---|
enabled |
default_field index を有効または無効にします。 デフォルト値はtrue です。 |
analyzer
の default_field
キーでは、索引でテキストを分析する方法を指定します。 後で、
$text
演算子を使用して索引を照会できます。 詳しくは、検索の資料で代替アナライザーを参照してください。 文書が英語以外の言語で索引付けされている場合、または E メール・アドレスの突き合わせなど、アナライザーに他の特別な要件がある場合は、代替アナライザーを選択できます。
default_field
が指定されていない場合、または空のオブジェクトが指定されている場合は、デフォルトで true
になり、standard
アナライザーが使用されます。
fields
配列
fields
配列には、文書ごとに索引付けする必要があるフィールドのリストが含まれます。 特定のフィールドについてのみ索引照会が分かっている場合は、このフィールドを使用して索引のサイズを制限できます。 各フィールドでは、索引付けするタイプも指定する必要があります。 指定可能なタイプを以下のリストに示します。
"boolean"
"string"
"number"
index_array_lengths
フィールド
IBM Cloudant 照会テキスト索引には、index_array_lengths
というプロパティーがあります。 このプロパティーを明示的に設定しない場合のデフォルト値は、
true
です。
このフィールドが true
に設定されている場合、索引には追加の作業が必要です。 この作業には、すべての配列のすべての文書のスキャンと、検出された各配列の長さを保持するフィールドの作成が含まれます。
以下の状況では、index_array_lengths
フィールドを false
に設定することをお勧めします。
- 配列の長さを知る必要がない。
- 演算
$size
は使わない。 - データベース内の文書が複雑であるか、完全に制御下にあるわけではない。 そのため、配列の長さを判別して保管するために必要な追加処理の影響を見積もることが難しい。
The $size
operator requires that you set the index_array_lengths
field to true
. 設定しない場合、演算子は機能しません。
実動システムでのパフォーマンスを最適化するための推奨設定を含む JSON 文書の例を以下に示します。
{
"default_field": {
"enabled": false
},
"index_array_lengths": false
}
partitioned
フィールド
このフィールドでは、作成する索引をパーティション化索引にするか、グローバル索引にするかを決定します。
値 | 説明 | 注記 |
---|---|---|
true |
索引をパーティション化索引として作成します。 | パーティション・データベースでのみ使用できます。 |
false |
索引をグローバル索引として作成します。 | どのデータベースでも使用できます。 |
デフォルトは、データベースの partitioned
設定に従います。
データベースはパーティション化されていますか? | デフォルトの partitioned 値 |
使用可能な値 |
---|---|---|
ある | true |
true , false |
いいえ | false |
false |