我应该直接在 elasticsearch 中存储字符串还是它们的数字标记

Should I store strings directly or their numeric tokens in elasticsearch

我无法决定以何种方式将事件信息保存到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
    }
}

第一个需要的工作更少,但它是否比第二个执行得更慢并且需要更多的磁盘空间?

我认为你的第二个解决方案没有任何好处。我只是将选项存储为数组:

{
   "id":"1",
   "name":"Event A",
   "type":["Training","Workshop","Meeting"]
   "industrialSector":["Energy","Transport"]
   "country":"China"
   // + 80 fields alike
}