V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
axwz88
V2EX  ›  Elasticsearch

请教个 Elasticsearch 的多标签筛选问题

  •  
  •   axwz88 · 2020-12-11 03:33:42 +08:00 · 3696 次点击
    这是一个创建于 1436 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我举个简单的栗子就知道我想问什么了。

    比如有多个学校,
    华东师范大学
    同济大学
    N 多个学校......

    每个学校有 N 个标签
    华东师范大学:学霸多,女生多,校园美,交通便利....N 多个标签...
    同济大学:学霸多,男生多,美食多,运动场大....N 多个标签...

    以上都是我自己编的,

    然后我的问题是,我可以用 ES 实现根据标签去筛选学校吗,用户可以选择一个或多个标签,然后筛选符合条件的学校,如果是用 MYSQL 上面的需求很容易就能实现,用 ES 怎么实现更好,请教一下,谢谢大家。
    14 条回复    2020-12-16 11:51:32 +08:00
    stiekel
        1
    stiekel  
       2020-12-11 07:08:26 +08:00
    也一样实现,es 可以存数组。然后使用 term 。
    trevis761923
        2
    trevis761923  
       2020-12-11 08:08:57 +08:00
    设定个字段名 label 值存[ "value1", "value2"...] 然后再搜呗 会自动分词的
    undefine2020
        3
    undefine2020  
       2020-12-11 09:06:00 +08:00
    啊,es 知道,请教 mysql 是怎么实现多表现搜索的?
    wakzz
        4
    wakzz  
       2020-12-11 09:20:28 +08:00
    这个用 es 的 terms 很好实现, 反而是 mysql 并不好实现,而且这种应用场景下 mysql 数据量大了以后不好优化
    kiddingU
        5
    kiddingU  
       2020-12-11 09:31:28 +08:00
    terms 就可以了
    JRay
        6
    JRay  
       2020-12-11 09:47:03 +08:00
    terms 就可以了
    ben1024
        7
    ben1024  
       2020-12-11 12:39:04 +08:00
    should 嵌套
    lithium4010
        8
    lithium4010  
       2020-12-11 17:46:42 +08:00
    terms filter
    axwz88
        9
    axwz88  
    OP
       2020-12-11 20:48:31 +08:00
    @stiekel
    @wakzz
    @kiddingU
    @JRay
    @lithium4010
    谢谢,用 terms 可以实现查询,然后我主要想问下储存的方式,现在知道有两个储存的方式,一种是标签字段类型是 keyword,然后按数组存储的,另一种是全部标签存储在一个字符串中,标签之间用逗号分隔。两种都可以精确查询,不知道实际开发用哪种方式比较多。
    loveyu
        10
    loveyu  
       2020-12-11 21:26:39 +08:00 via Android
    MySQL 实现估计是连表吧,还不如 ES
    stiekel
        11
    stiekel  
       2020-12-12 06:59:40 +08:00
    @axwz88 前者。
    JRay
        12
    JRay  
       2020-12-12 11:35:57 +08:00
    @axwz88 直接数组存就可以了
    kiddingU
        13
    kiddingU  
       2020-12-12 21:20:36 +08:00
    @axwz88 数组就行,我目前有一个 index 和你的需求类似,也是存储用户标签数据,直接数据就行
    lithium4010
        14
    lithium4010  
       2020-12-16 11:51:32 +08:00
    keyword
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2592 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 10:45 · PVG 18:45 · LAX 02:45 · JFK 05:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.