首页 > 解决方案 > 使用非规范化或连接字段对弹性搜索数据库建模

问题描述

我对弹性搜索很陌生,由于我的关系数据库思维方式,我很难设计数据结构。

目前,我有一个简单的 elasticsearch 7.4 索引,其中包含多个分配了地理位置坐标的机构。现在,我想创建一个结构来保存可以与多个机构相关联的促销活动,方法是使用它们的 ID、名称、品牌名称或关键字。这些活动也将具有开始/结束日期,并且可以经常添加或修改。在 ES 中拥有所有这些,我可以轻松地找到附近所有具有某些活动活动的场所。

考虑到这一点,我想知道在 ES 中存储该信息的最佳方法是什么。我可以对其进行非规范化并将其与机构一起存储,但每次添加或更改活动时更新整个数据库的成本很高。有什么想法吗?

这是当前的建立指数:

"keywords": {
    "type": "keyword"
},
"brand_name": {
    "type": "keyword"
},
"name": {
    "type": "text"
},
"country": {
    "type": "keyword"
},
"city": {
    "type": "keyword"
},
"street_address": {
    "type": "text"
},
"neighborhood": {
    "type": "text"
},
"region": {
    "type": "text"
},
"postal_code": {
    "type": "keyword"
},
"coordinates": {
    "type": "geo_point"
}

标签: elasticsearch

解决方案


推荐阅读