首页 > 解决方案 > AWS DynamoDB 中的数据类型创建和 URL 列表的弹性搜索

问题描述

我启用了 Aws DynamoDB 流并创建了一个 lambda 函数来将数据索引到 Elasticsearch。

在我的 DynamoDb 表中有一个名为 URL 的列,我将存储单行的 URL 列表。

URL 最好是 AWS S3 对象的对象 URL

流式传输后,我在这里将数据索引到弹性搜索中,我的问题是我应该更喜欢在 DynamoDB(单行)和 Elasticsearch(单文档)中存储多个 URL 的数据类型是什么

有人可以帮助我以最有效的方式实现这一目标吗?提前致谢

json结构

 {
      "id":"234561",
      "policyholdername":"xxxxxx",
      "age":"24",
      "claimnumber":"234561",
      "policynumber":"456784",
      "url":"https://dgs-dms.s3.amazonaws.com/G-3114_Textract.pdf",
      "claimtype":"Accident",
      "modified_date":"2020-02-05T17:36:49.053Z",
      "dob":"2020-02-05T17:36:49.053Z",
      "client_address":"no,7 royal avenue thirumullaivoyal chennai"
    }

将来对于单个索赔号应该有多个 URL 那么,如何处理呢?

标签: elasticsearchamazon-dynamodbamazon-dynamodb-streams

解决方案


不确定 Dynamo DB 类型。但是在 Elasticsearch 中没有专门的列表类型。要存储字符串列表(在您的情况下为 URL),您可以使用关键字字段类型。

例如,您的数据可以像

 {
      "id":"234561",
      "policyholdername":"xxxxxx",
      "age":"24",
      "claimnumber":"234561",
      "policynumber":"456784",
      "url":["https://dgs-dms.s3.amazonaws.com/G-3114_Textract.pdf","https://foo/bar/foo.pdf"]
      "claimtype":"Accident",
      "modified_date":"2020-02-05T17:36:49.053Z",
      "dob":"2020-02-05T17:36:49.053Z",
      "client_address":"no,7 royal avenue thirumullaivoyal chennai"
    }

等效的弹性搜索映射可以是

{
  "mappings": {
    "_doc": {
      "properties": {
        "url": {
          "type": "keyword"
        }
      }
    }
  }
}

并且搜索查询可以是

POST index/_search
{
    "query": {
        "term": {
            "url": "https://foo/bar/foo.pdf"
        }
    }
}

推荐阅读