1
我无法决定将事件信息保存到elasticsearch的方法。信息存储在mysql中,因为我想让它们可过滤,所以我决定使用elasticsearch来索引事件。每个字段的选项数量有限,但允许有多个选项。我应该直接存储的信息是这样的:我是否应该直接在elasticsearch中存储字符串或其数字标记
{
"id":"1",
"name":"Event A",
"type":"Training,Workshop,Meeting",
"industrialSector":"Energy,Transport",
"country":"China"
// + 80 fields alike
}
或者使用一些后台的工作保存到elasticsearch前关闭字符串值到数字标记:
{
"id":"1",
"name":"Event A",
"type":"1 3 5",
"industrialSector":"2 3",
"country":"7"
// + 80 fields alike
}
将会有一个地图对象引用保存或取出后场之前选择:
let options =
{
type:{
Training:1,
Fair:2
Workshop:3,
Brokerage:4
Meeting:5
},
industrialSector:{
Tech:1
Energy:2
Transport:3
}
}
第一个需要较少的工作,但它比第二个执行速度较慢,需要更多的diskspaces?
谢谢。我一直在这两种解决方案之间切换,无法确定哪一种。我正在认真考虑你的建议。但是,顺序在一些领域也很重要,所以我会选择存储字符串而不是数组。与我的第二个解决方案相比,额外的磁盘空间是直接存储字符串的唯一缺点吗? – RedGiant
@ RedGiant是源文档(您发送给elasticsearch的文档)将存储在磁盘上,您可以禁用该文档或启用压缩。所以我认为99%的用例确实没有问题。如果顺序很重要,我的数组应该不起作用,我认为文本字段可能是解决方案。 – MartinSchulze