[英]How do I denormalize my relational data for AWS CloudSearch documents?
AWS CloudSearch希望您將其平整的數據文檔發送給他們,以進行索引以進行搜索,如下所示:
[
{"type": "add",
"id": "123456",
"fields": {
"account_id": "123456",
"name": "foo",
"addresses": []
}
}
]
假設我有一個帶有accounts
表和addresses
表的數據庫。
每個account
有很多addresses
。 addresses
表具有以下字段:
如何在CloudSearch文檔結構中對地址進行非規范化,以便可以在帳戶和地址中的所有列中進行搜索?
還是應該為每個表創建一個單獨的搜索域?
我假設您的用例是:
我建議以下兩件事:
將每個地址索引為一個單獨的文檔
我會將每個地址索引為一個單獨的文檔。 每個地址都有一個單獨的文檔,將使您能夠保持不同字段之間的關系(如果每個帳戶都有多個城市和多個州,則可能會丟失該關系)。
分別索引每個字段
我會分別索引每個字段(城市,州等)。 突破每個字段將使您能夠獨立搜索它們(例如,獲取俄亥俄州克利夫蘭的所有地址),將它們用作構面,基於它們提高分數等。
這是我建議的架構中一些文檔的示例:
[
{"type": "add",
"id": "<see below>",
"fields": {
"account_id": "123456",
"name": "John Smith",
"address_1": "1 Main St",
"address_2": "Apt 1",
"city": "Davenport",
"state": IA,
"zip": 52081
}
},
{"type": "add",
"id": "<see below>",
"fields": {
"account_id": "123456",
"name": "John Smith",
"address_1": "2 Elm St",
"city": "Lincoln",
"state": NE,
"zip": 23452
}
}
]
產生文件編號:
請注意,您需要一些非隨機方式來構造唯一的document_id(每個帳戶+地址唯一,而不僅僅是每個帳戶唯一)。 諸如account_id加上地址,城市,州,郵編的哈希值等都可以使用,或者您可以在表中添加另一列以唯一地標識它們(我更喜歡后者)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.