

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# データマッピングの検証
<a name="full-text-search-data-validation"></a>



このプロセスを使用して、データは Neptune から OpenSearch にレプリケートされます。
+ 問題のフィールドのマッピングが既に OpenSearch に存在する場合:
  + データ検証ルールを使用してデータを既存のマッピングに安全に変換できる場合は、フィールドを OpenSearch に格納します。
  + そうでない場合は、対応するストリーム更新レコードを削除します。
+ 問題のフィールドに既存のマッピングがない場合は、Neptune のフィールドのデータ型に対応する OpenSearch データ型を見つけます。
  + データ検証ルールを使用してそのフィールドデータを OpenSearch データ型に安全に変換できる場合は、新しいマッピングおよびフィールドデータを OpenSearch に格納します。
  + そうでない場合は、対応するストリーム更新レコードを削除します。

値は Neptune 型ではなく同等の OpenSearch 型または既存の OpenSearch マッピングに対して検証されます。たとえば、`"123"^^xsd:int` の値 `"123"` の検証が `int` 型ではなく `long` 型に対して行われます。

Neptune はすべてのデータを OpenSearch にレプリケートしようとしますが、OpenSearch のデータ型が Neptune のものとは全く異なっている場合があり、そのような場合、レコードは OpenSearch でインデックス化されるのではなく、スキップされます。

たとえば、Neptune では、1 つのプロパティが異なる型の複数の値を持つことがありますが、OpenSearch では、フィールドは、インデックス全体で同じ型である必要があります。

デバッグログを有効にすると、Neptune から OpenSearch へのエクスポート中に削除されたレコードを表示できます。デバッグログエントリの例を次に示します。

```
Dropping Record : Data type not a valid Gremlin type 
<Record>
```

データ型は、次のように検証されます。
+ **`text`** — Neptune のすべての値は、OpenSearch のテキストに安全にマッピングできます。
+ **`long`** — 次の Neptune データ型のルールは、OpenSearch マッピング型が long の場合に当てはまります (以下の例では、`"testLong"` は `long` マッピング型を持つとみなされています）。
  + `boolean` — 無効で、変換できない、対応するストリーム更新レコードが削除されます。

    無効な Gremlin の例は次のとおりです。

    ```
      "testLong" : true.
      "testLong" : false.
    ```

    無効な SPARQL の例は次のとおりです。

    ```
      ":testLong" : "true"^^xsd:boolean
      ":testLong" : "false"^^xsd:boolean
    ```
  + `datetime` — 無効で、変換できない、対応するストリーム更新レコードは削除されます。

    無効な Gremlin の例は次のとおりです。

    ```
      ":testLong" :  datetime('2018-11-04T00:00:00').
    ```

    無効な SPARQL の例は次のとおりです。

    ```
      ":testLong" : "2016-01-01"^^xsd:date
    ```
  + `float`、`double`、または `decimal` — Neptune での値が 64 ビットに収まる整数である場合、その値は有効であり、長整数として OpenSearch に格納されますが、分数部を持つ場合、または `NaN` あるいは `INF` である場合、または、9,223,372,036,854,775,807 より大きいか、-9,223,372,036,854,775,808 より小さい場合、その値は無効であり、対応するストリーム更新レコードは削除されます。

    有効な Gremlin の例は次のとおりです。

    ```
      "testLong" :  145.0.
      ":testLong" :  123
      ":testLong" :  -9223372036854775807
    ```

    有効な SPARQL の例は次のとおりです。

    ```
      ":testLong" : "145.0"^^xsd:float
      ":testLong" :  145.0
      ":testLong" : "145.0"^^xsd:double
      ":testLong" : "145.0"^^xsd:decimal
      ":testLong" : "-9223372036854775807"
    ```

    無効な Gremlin の例は次のとおりです。

    ```
      "testLong" :  123.45
      ":testLong" :  9223372036854775900
    ```

    無効な SPARQL の例は次のとおりです。

    ```
      ":testLong" :  123.45
      ":testLong" :  9223372036854775900
      ":testLong" : "123.45"^^xsd:float
      ":testLong" : "123.45"^^xsd:double
      ":testLong" : "123.45"^^xsd:decimal
    ```
  + `string` — Neptune での値が 64 ビット整数に含まれる可能性がある整数の文字列表現である場合、その値は有効であり、OpenSearch で `long` に変換されます。他の文字列値は `long` マッピングには無効であり、対応するストリーム更新レコードは削除されます。

    有効な Gremlin の例は次のとおりです。

    ```
      "testLong" :  "123".
      ":testLong" :  "145.0"
      ":testLong" :  "-9223372036854775807"
    ```

    有効な SPARQL の例は次のとおりです。

    ```
      ":testLong" : "145.0"^^xsd:string
      ":testLong" : "-9223372036854775807"^^xsd:string
    ```

    無効な Gremlin の例は次のとおりです。

    ```
      "testLong" :  "123.45"
      ":testLong" :  "9223372036854775900"
      ":testLong" :  "abc"
    ```

    無効な SPARQL の例は次のとおりです。

    ```
      ":testLong" : "123.45"^^xsd:string
      ":testLong" : "abc"
      ":testLong" : "9223372036854775900"^^xsd:string
    ```
+ **`double`** — OpenSearch マッピング型が `double` の場合、以下の規則が適用されます (ここで「testDouble」フィールドは、OpenSearch で `double` のマッピングを持つとみなされます)。
  + `boolean` — 無効で、変換できない、対応するストリーム更新レコードが削除されます。

    無効な Gremlin の例は次のとおりです。

    ```
      "testDouble" : true.
      "testDouble" : false.
    ```

    無効な SPARQL の例は次のとおりです。

    ```
      ":testDouble" : "true"^^xsd:boolean
      ":testDouble" : "false"^^xsd:boolean
    ```
  + `datetime` — 無効で、変換できない、対応するストリーム更新レコードは削除されます。

    無効な Gremlin の例は次のとおりです。

    ```
      ":testDouble" :  datetime('2018-11-04T00:00:00').
    ```

    無効な SPARQL の例は次のとおりです。

    ```
      ":testDouble" : "2016-01-01"^^xsd:date
    ```
  + 浮動小数点型 `NaN` または `INF` — SPARQL の値が浮動小数点 `NaN` または `INF` の場合、これは有効ではなく、対応するストリーム更新レコードは削除されます。

    無効な SPARQL の例は次のとおりです。

    ```
    "  :testDouble" : "NaN"^^xsd:float
      ":testDouble" : "NaN"^^double
      ":testDouble" : "INF"^^double
      ":testDouble" : "-INF"^^double
    ```
  + 数値または数値文字列 — Neptune での値が、`double` として安全に表現できる他の数値または数値文字列表現である場合、それは有効であり、OpenSearch で `double` に変換されます。その他の文字列値は、OpenSearch `double` マッピングでは無効であり、対応するストリーム更新レコードは削除されます。

    有効な Gremlin の例は次のとおりです。

    ```
      "testDouble" :  123
      ":testDouble" :  "123"
      ":testDouble" :  145.67
      ":testDouble" :  "145.67"
    ```

    有効な SPARQL の例は次のとおりです。

    ```
      ":testDouble" :  123.45
      ":testDouble" :  145.0
      ":testDouble" : "123.45"^^xsd:float
      ":testDouble" : "123.45"^^xsd:double
      ":testDouble" : "123.45"^^xsd:decimal
      ":testDouble" : "123.45"^^xsd:string
    ```

    無効な Gremlin の例は次のとおりです。

    ```
      ":testDouble" :  "abc"
    ```

    無効な SPARQL の例は次のとおりです。

    ```
      ":testDouble" : "abc"
    ```
+ **`date`** — OpenSearch マッピング型が `date` である場合、Neptune の `date` および `dateTime` 値は有効であり、`dateTime` 形式に正常に解析できる任意の文字列値も同様です。

  Gremlin または SPARQL の有効な例は次のとおりです。

  ```
    Date(2016-01-01)
    "2016-01-01" "
    2003-09-25T10:49:41"
    "2003-09-25T10:49"
    "2003-09-25T10"
    "20030925T104941-0300"
    "20030925T104941"
    "2003-Sep-25" "
    Sep-25-2003"
    "2003.Sep.25"
    "2003/09/25"
    "2003 Sep 25" "
    Wed, July 10, '96"
    "Tuesday, April 12, 1952 AD 3:30:42pm PST"
    "123"
    "-123"
    "0"
    "-0"
    "123.00"
    "-123.00"
  ```

  無効な例は次のとおりです。

  ```
    123.45
    True
    "abc"
  ```