elasticsearch - 使用非规范化或连接字段对弹性搜索数据库建模
问题描述
我对弹性搜索很陌生,由于我的关系数据库思维方式,我很难设计数据结构。
目前,我有一个简单的 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"
}
解决方案
推荐阅读
- visual-studio - 删除github仓库后上传到github
- python-3.x - 如何在 python 中使用 Microsoft Graph API 创建计划任务?
- python - 如何根据 Python 中的条件将另一个数据帧中的值分配给当前数据帧?
- c++ - 将指针传递给链表时出现分段错误
- ios - 将 Axe DevTools 导入 iOS 单元测试和 UITests
- android - Android 提示样式
- multidimensional-array - 如何制作对角张量,为什么 Tensorflow linalg.tensor_diag 不这样做?
- python-3.x - 在 ray.remote 中同步循环
- python - 访问排序列表的第一个元素
- java - 如何在 gradle 构建中有许多任务配置?