【发布时间】:2015-12-31 02:09:55
【问题描述】:
假设我有一些与其他类型的文档有关系的文档,比如与 regions 相关的 building:
building:
country: region
city: region
nearbyParks: [region]
closestNuclearHideout: region
我需要能够按与建筑相关的任何区域执行搜索,因此我将此结构转换为:
building:
countryId: <uuid>
cityId: <uuid>
nearbyParkIds: [<uuid>]
closestNuclearHideoutId: <uuid>
regions: [region]
但是,此时我只需要按相关区域 ID 执行搜索,并且希望禁止 ElasticSearch 为每个 regions.* 字段(regions.id 除外)编制索引以保持干净。这可能使用当前的映射 API 吗?我希望让我的弹性文档尽可能小,并让它们与后端输出保持同步,因此添加 regionIds uuid 数组字段是一种选择,但不需要。
【问题讨论】:
-
如果您不需要有关区域的信息,您可以在 ElasticSearch 中仅存储区域 ID,并从其他存储(数据库或其他)中检索其余信息。
-
您能否分享更多信息,即您使用的是什么客户端技术?您是如何创建索引和映射类型的?
-
@Val 我正在使用具有标准零停机别名概念的官方 java 客户端,映射是使用索引创建的。
-
@Ashalynd 是的,这就是 regionIds 字段解决方案。我试图避免它,所以后端(数据库)和弹性输出对于客户端来说是相同的。
-
那么您能展示一下您是如何创建索引以及您正在使用的映射吗?
标签: elasticsearch