【发布时间】:2021-04-23 16:34:09
【问题描述】:
我正在尝试重构我们的 ElasticSearch 后端,而现在,我们正在为每种语言使用不同的索引。这意味着我们必须做很多多余的插入(因为我们需要支持 8 个)。
问题是有时会动态添加/删除语言。此外,许多静态数据也附加到商品上,考虑价格、功能 ID、可用性、状态等。这些都与聚合结合使用以进行分面搜索。
将每种语言的所有这些数据复制到一个单独的索引中似乎相当麻烦。因此,我想知道是否有更好的解决方案(可能使用属性),在同一索引中为不同语言使用每个属性的相应分析器来索引项目的名称。
如果是这样,我希望能够删除定义的语言,并插入定义的语言。我现在通过相应地创建/删除索引来做到这一点。
我尝试了多种方法(多索引、语言检测等),但我还没有找到感觉像是“正确方法”的方法。简而言之,目前的方法目前可行,但感觉很尴尬。
实际映射如下,使用了索引documents-%lang%:
'name': {
'type' : 'text',
'analyzer': 'simple'
},
'code': {
'type': 'keyword'
},
'popularity': {
'type': 'long'
},
'search_words': {
'type': 'keyword'
},
'features': {
'type': 'nested',
'properties': {
'id': {
'type': 'keyword'
},
'values': {
'type': 'keyword'
}
}
},
'storefronts': {
'type': 'integer'
}
提前致谢。
【问题讨论】:
标签: elasticsearch