我无法决定将事件信息保存到elasticsearch的方法。信息存储在mysql中,因为我想让它们可过滤,所以我决定使用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
}
}
第一个需要的工作量较少,但是它的执行速度较慢,需要的磁盘空间多于第二个磁盘空间吗?
答案 0 :(得分:2)
我认为你的第二个解决方案没有任何好处。我只是将选项存储为数组:
{
"id":"1",
"name":"Event A",
"type":["Training","Workshop","Meeting"]
"industrialSector":["Energy","Transport"]
"country":"China"
// + 80 fields alike
}