关于 elasticsearch:AWS DynamoDB 中的数据类型创建和 URL 列表的弹性搜索

Datatype creation in AWS DynamoDB and elastic search for List of URL's

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

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

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

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

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

Json 结构

1
2
3
4
5
6
7
8
9
10
11
12
 {
     "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\\'s
那么,如何处理呢?


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

例如你的数据可以像

1
2
3
4
5
6
7
8
9
10
11
12
 {
     "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"
    }

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

1
2
3
4
5
6
7
8
9
10
11
{
 "mappings": {
   "_doc": {
     "properties": {
       "url": {
         "type":"keyword"
        }
      }
    }
  }
}

并且搜索查询可以是

1
2
3
4
5
6
7
8
POST index/_search
{
   "query": {
       "term": {
           "url":"https://foo/bar/foo.pdf"
        }
    }
}