验证数据映射 - Amazon Neptune
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

验证数据映射

数据被复制到OpenSearch从 Neptune 使用这个过程:

  • 如果相关字段的映射已经存在于OpenSearch:

    • 如果可以使用数据验证规则将数据安全转换为现有映射,则将字段存储在OpenSearch.

    • 如果没有,请删除相应的流更新记录。

  • 如果有问题的字段没有现有映射,请查找OpenSearch数据类型对应于 Neptune 中字段的数据类型。

    • 如果字段数据可以安全地转换为OpenSearch数据类型,然后将新映射和字段数据存储在OpenSearch.

    • 如果没有,请删除相应的流更新记录。

对等价值进行验证OpenSearch类型或现有OpenSearch映射而不是 Neptune 类型。例如,对值的验证"123""123"^^xsd:int是针对long类型而不是int

尽管 Neptune 尝试将所有数据复制到OpenSearch,有些情况下,OpenSearch与 Neptune 中的记录完全不同,在这种情况下,记录被跳过,而不是在OpenSearch.

例如,在 Neptune 中,一个属性可以具有不同类型的多个值,而在OpenSearch一个字段在索引中必须具有相同的类型。

通过启用调试日志,您可以查看在从 Neptune 导出到OpenSearch. 调试日志条目的示例如下:

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

按以下方式验证数据类型:

  • text— Neptune 中的所有值都可以安全地映射到OpenSearch.

  • long— Neptune 数据类型的以下规则应用于OpenSearch映射类型是长的(在下面的示例中,假定"testLong"有一个long映射类型):

    • boolean— 无效,无法转换,并删除相应的流更新记录。

      无效的格雷姆林示例包括:

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

      无效的 SPARQL 示例包括:

      ":testLong" : "true"^^xsd:boolean ":testLong" : "false"^^xsd:boolean
    • datetime— 无效,无法转换,并删除相应的流更新记录。

      一个无效的格雷姆林示例是:

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

      一个无效的 SPARQL 示例是:

      ":testLong" : "2016-01-01"^^xsd:date
    • floatdouble,或者decimal— 如果 Neptune 中的值是一个可以容纳 64 位的整数,则它是有效的,并存储在OpenSearch作为长,但如果它有一个小数部分,或者是一个NaNINF,或者大于 9,223,75,0364,75,0364,0364,03654,0364,03654,0364,0364,0364,0364,03654,0364,0364,036,754,75454,7544,75,036,7544,75,808,则无效并删除相应的流更新记录。

      有效的格雷姆林示例包括:

      "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"

      无效的格雷姆林示例包括:

      "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 位整数中的整数的字符串表示形式,则它是有效的,并转换为long在OpenSearch. 任何其他字符串值对弹性拱无效long映射,并删除相应的流更新记录。

      有效的格雷姆林示例包括:

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

      有效的 SPARQL 示例包括:

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

      无效的格雷姆林示例包括:

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

      无效的 SPARQL 示例包括:

      ":testLong" : "123.45"^^xsd:string ":testLong" : "abc" ":testLong" : "9223372036854775900"^^xsd:string
  • double— 如果OpenSearch映射类型为double,以下规则适用(在这里,假定 “TestTouble” 字段具有double映射OpenSearch):

    • boolean— 无效,无法转换,并删除相应的流更新记录。

      无效的格雷姆林示例包括:

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

      无效的 SPARQL 示例包括:

      ":testDouble" : "true"^^xsd:boolean ":testDouble" : "false"^^xsd:boolean
    • datetime— 无效,无法转换,并删除相应的流更新记录。

      一个无效的格雷姆林示例是:

      ":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,则它是有效的,并转换为double在OpenSearch. 任何其他字符串值对于OpenSearch double映射,并删除相应的流更新记录。

      有效的格雷姆林示例包括:

      "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

      一个无效的格雷姆林示例是:

      ":testDouble" : "abc"

      无效的 SPARQL 示例如下所示:

      ":testDouble" : "abc"
  • date— 如果OpenSearch映射类型为date, NeptunedatedateTime值是有效的,就像任何可以成功解析为dateTime格式的日期和时间。

    格雷姆林或 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"